Class: Multichain::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/multichain/client.rb

Instance Method Summary collapse

Constructor Details

#initializeClient

Returns a new instance of Client.



4
5
6
7
8
9
# 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

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, params = []) ⇒ Object



100
101
102
103
# File 'lib/multichain/client.rb', line 100

def method_missing(sym, params = [])
  request = build_request(sym.to_s, params)
  send_request(request)
end

Instance Method Details

#assetObject



36
37
38
# File 'lib/multichain/client.rb', line 36

def asset
  config['asset']
end

#authObject



11
12
13
# File 'lib/multichain/client.rb', line 11

def auth
  "#{@username}:#{@password}"
end

#configObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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

#send_asset(recipient, amount) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# 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) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/multichain/client.rb', line 61

def send_asset_with_data recipient, amount, data
  params = [
    wallets.fetch(recipient),
    {asset => amount},
    data
  ]

  s =  params

  {
    recipient: recipient,
    asset: asset,
    amount: amount,
    data: data,
    id: s['result']
  }
end

#send_url(recipient, url) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/multichain/client.rb', line 79

def send_url recipient, url
  hex = Encoder.hexify url
  params = [
    wallets.fetch(recipient),
    {asset => 0},
    hex
  ]

  s =  params
  data = Encoder.extract Encoder.decode hex

  {
    recipient: recipient,
    url: url,
    hash: data[:hash],
    timestamp: data[:timestamp],
    hex: hex,
    id: s['result']
  }
end

#urlObject



15
16
17
# File 'lib/multichain/client.rb', line 15

def url
  "http://#{auth}@#{@host}:#{@port}"
end

#walletsObject



40
41
42
# File 'lib/multichain/client.rb', line 40

def wallets
  @wallets ||= Wallets.new
end