mirror of
https://github.com/bumi/openalias-ruby
synced 2025-12-26 21:24:39 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 562e4fac45 | |||
| cd337c42b1 | |||
| 867cb68df6 | |||
| 30e9a0d805 | |||
| 6e3b03abda | |||
| 7c12457769 | |||
| 67a1449d7f | |||
| 3fe9389d1f |
@ -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"
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"]
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user