1
0
mirror of https://github.com/bumi/openalias-ruby synced 2025-12-27 13:44:40 +00:00

Compare commits

..

No commits in common. "master" and "v0.1.0" have entirely different histories.

5 changed files with 9 additions and 35 deletions

View File

@ -15,8 +15,6 @@ At some point it would probably be awesome to rewrite the whole thing in pure ru
## Installation
(You need `rustc` installed to build the native rust extension)
Add this line to your application's Gemfile:
```ruby
@ -30,15 +28,12 @@ Or install it yourself as:
## Usage
```ruby
Openalias.addresses('btc@michaelbumann.com') # or Openalias.lookup('btc@michaelbumann.com')
Openalias.addresses('btc@michaelbumann.com')
=> [#<Openalias::CryptoAddress cryptocurrency="btc", address="3MGfEx4iaVEAy8nD4rWdocgrPo8aCR4Zfa", recipient_name="bumi">]
Openalias.addresses('donate.getmonero.org')
=> [#<Openalias::CryptoAddress cryptocurrency="xmr", address="44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A", recipient_name="Monero Development", tx_description="Donation to Monero Core Team">, #<Openalias::CryptoAddress cryptocurrency="btc", address="1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H", recipient_name="Monero Development", tx_description="Donation to Monero Core Team">]
Openalias.addresses('donate.getmonero.org').find(&:xmr?)
=> #<Openalias::CryptoAddress cryptocurrency="xmr", address="44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A", recipient_name="Monero Development", tx_description="Donation to Monero Core Team">
Openalias.addresses('donate.getmonero.org')[0].recipient_name
=> "Monero Development"

View File

@ -2,24 +2,12 @@ require 'thermite/fiddle'
require 'ostruct'
class Openalias
VERSION = "0.2.0"
class CryptoAddress < OpenStruct;
def method_missing(method_name, *args, &block)
if symbol = method_name[/(.*)\?\z/, 1]
self.cryptocurrency.to_s.downcase === symbol.to_s.downcase
else
super
end
end
end
VERSION = "0.1.0"
class CryptoAddress < OpenStruct; end
toplevel_dir = File.dirname(File.dirname(__FILE__))
Thermite::Fiddle.load_module('init_openalias_rust',
cargo_project_path: toplevel_dir,
ruby_project_path: toplevel_dir)
def self.lookup(address)
self.addresses(address)
end
end

View File

@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
Gem::Specification.new do |spec|
spec.name = "openalias"
spec.version = "0.2.0"
spec.version = "0.1.0"
spec.authors = ["bumi"]
spec.email = ["hello@michaelbumann.com"]

View File

@ -5,20 +5,9 @@ RSpec.describe Openalias do
expect(Openalias::VERSION).not_to be nil
end
it "provides #lookup as an alias for #addresses" do
expect(Openalias).to respond_to(:lookup)
end
it "provides ? methods to check for the currency" do
expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.xmr?).to eql(true)
expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.btc?).to eql(false)
expect(Openalias.addresses('donate.getmonero.org').find(&:xmr?).xmr?).to eql(true)
expect(Openalias.addresses('donate.getmonero.org').find(&:xmr?).btc?).to eql(false)
end
it "provides accessors for the data" do
expect(Openalias.addresses('donate.getmonero.org')[0].recipient_name).to eql('Monero Development')
expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.address).to eql('44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A')
expect(Openalias.addresses('donate.getmonero.org')[0].address).to eql('44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A')
end
it "returns and crypto addresses array" do

View File

@ -8,7 +8,7 @@ class!(Openalias);
methods!(
Openalias,
_itself,
itself,
fn addresses(address: RString) -> Array {
let mut cryptoaddresses = Array::new();
@ -45,7 +45,8 @@ methods!(
}
return cryptoaddresses;
}
Err(_cas) => {
Err(cas) => {
println!("{}", cas);
return cryptoaddresses;
}
}
@ -55,6 +56,7 @@ methods!(
#[no_mangle]
pub extern fn init_openalias_rust() {
Class::from_existing("Openalias").define(|itself| {
//Class::new("OpenaliasRust", None).define(|itself| {
itself.def_self("addresses", addresses);
});
}