class Multichain::Client
Public Class Methods
new()
click to toggle source
# File lib/multichain/client.rb, line 4 def initialize @username = config['rpc']['user'] @password = config['rpc']['password'] @host = config['rpc']['host'] @port = config['rpc']['port'] end
Public Instance Methods
asset()
click to toggle source
# File lib/multichain/client.rb, line 36 def asset config['asset'] end
auth()
click to toggle source
# File lib/multichain/client.rb, line 11 def auth "#{@username}:#{@password}" end
config()
click to toggle source
# File lib/multichain/client.rb, line 19 def config config_file = "#{ENV['HOME']}/.multichain/config.yml" config_file = 'spec/support/fixtures/config.yml' if ENV['TEST'] @config ||= begin c = YAML.load_file config_file if ENV['TEST'] c['rpc'] = {} c['rpc']['user'] = ENV['RPC_USER'] c['rpc']['password'] = ENV['RPC_PASSWORD'] c['rpc']['host'] = ENV['RPC_HOST'] c['rpc']['port'] = ENV['RPC_PORT'] end c end end
method_missing(sym, params = [])
click to toggle source
# File lib/multichain/client.rb, line 100 def method_missing(sym, params = []) request = build_request(sym.to_s, params) send_request(request) end
send_asset(recipient, amount)
click to toggle source
# File lib/multichain/client.rb, line 44 def send_asset recipient, amount params = [ wallets.fetch(recipient), asset, amount ] s = sendassettoaddress params { recipient: recipient, asset: asset, amount: amount, id: s['result'] } end
send_asset_with_data(recipient, amount, data)
click to toggle source
# File lib/multichain/client.rb, line 61 def send_asset_with_data recipient, amount, data params = [ wallets.fetch(recipient), {asset => amount}, data ] s = sendwithmetadata params { recipient: recipient, asset: asset, amount: amount, data: data, id: s['result'] } end
send_url(recipient, url)
click to toggle source
# File lib/multichain/client.rb, line 79 def send_url recipient, url hex = Encoder.hexify url params = [ wallets.fetch(recipient), {asset => 0}, hex ] s = sendwithmetadata params data = Encoder.extract Encoder.decode hex { recipient: recipient, url: url, hash: data[:hash], timestamp: data[:timestamp], hex: hex, id: s['result'] } end
url()
click to toggle source
# File lib/multichain/client.rb, line 15 def url "http://#{auth}@#{@host}:#{@port}" end
wallets()
click to toggle source
# File lib/multichain/client.rb, line 40 def wallets @wallets ||= Wallets.new end
Private Instance Methods
build_request(method, params)
click to toggle source
# File lib/multichain/client.rb, line 107 def build_request(method, params) { method: method, params: params, id: ::SecureRandom.uuid }.to_json end
send_request(request)
click to toggle source
# File lib/multichain/client.rb, line 115 def send_request(request) post = HTTParty.post(url, body: request, headers: {"Content-Type" => "application/json"}) response = post.body JSON.parse(response) end