1
0
mirror of https://github.com/bumi/openalias-ruby synced 2025-12-26 21:24:39 +00:00

Compare commits

...

8 Commits

Author SHA1 Message Date
562e4fac45 Version 0.2.0 2018-11-03 18:38:21 +01:00
cd337c42b1 Add Openalias.lookup as alias to Openalias.addresses
The rust implementation uses #addresses but I find #lookup a bit more
intuitive and descriptive.
2018-11-03 18:36:50 +01:00
867cb68df6 cleanup 2018-11-03 18:32:09 +01:00
30e9a0d805 Add currency lookup helpers
add ? methods to for simple currency selection:
Openalias.addresses('donate@getmonero.org').find(&:xmr?)
2018-11-03 18:30:37 +01:00
6e3b03abda Make the test a bit more robust
As it (sadly) actually relies on the lookup of the data we do not
control what the result will be.
But in this case make sure we select the expected currency.
2018-11-01 12:50:33 +01:00
7c12457769 make the compiler happy 2018-11-01 12:50:33 +01:00
67a1449d7f remove debugging println 2018-11-01 12:50:33 +01:00
3fe9389d1f
Update README.md 2018-11-01 10:33:21 +00:00
5 changed files with 35 additions and 9 deletions

View File

@ -15,6 +15,8 @@ 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
@ -28,12 +30,15 @@ Or install it yourself as:
## Usage
```ruby
Openalias.addresses('btc@michaelbumann.com')
Openalias.addresses('btc@michaelbumann.com') # or Openalias.lookup('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,12 +2,24 @@ require 'thermite/fiddle'
require 'ostruct'
class Openalias
VERSION = "0.1.0"
class CryptoAddress < OpenStruct; end
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
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.1.0"
spec.version = "0.2.0"
spec.authors = ["bumi"]
spec.email = ["hello@michaelbumann.com"]

View File

@ -5,9 +5,20 @@ 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')[0].address).to eql('44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A')
expect(Openalias.addresses('donate.getmonero.org').find { |c| c.cryptocurrency.downcase == 'xmr' }.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,8 +45,7 @@ methods!(
}
return cryptoaddresses;
}
Err(cas) => {
println!("{}", cas);
Err(_cas) => {
return cryptoaddresses;
}
}
@ -56,7 +55,6 @@ 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);
});
}