nano_rpc 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -2
- data/lib/nano_rpc/client.rb +20 -7
- data/lib/nano_rpc/helpers/wallet_helper.rb +3 -1
- data/lib/nano_rpc/proxies/wallet.rb +3 -1
- data/lib/nano_rpc/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9978232fd9a93d80e7788e5199d61961c6e79984c38402c75a71582ed61eeef
|
4
|
+
data.tar.gz: 65239db16d0090666afe5cf1da64f9ef6fe2372e66a9ff9dae25c9321abaa99b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6e9d40af5b66f3717e8216cfa339aa3341e71079a7c16c2a0e299b659ef201e52ac4f85acc1d6f5e685ea5fceccf393d0da774c19f7d375707958c09e255a88
|
7
|
+
data.tar.gz: 292204a915746ed0cd49435995eb3e47bd771cfd5de2cd53f7eb8e5992b17cf52354b5a3ad122e423c3f9c27874b32e2094f9f4376e1ffe7bd8fe00e02b33330
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
![Ruby Nano RPC Logo](https://i.imgur.com/ihmmYcp.png)
|
2
2
|
|
3
|
-
Nano RPC is a Ruby wrapper for making Remote Procedure Calls against Nano digitial currency nodes. Arbitrary RPC access is provided along with proxy objects that expose helper methods ([Wiki](https://github.com/jcraigk/ruby_nano_rpc/wiki
|
3
|
+
Nano RPC is a Ruby wrapper for making Remote Procedure Calls against Nano digitial currency nodes. Arbitrary RPC access is provided along with proxy objects that expose helper methods ([Wiki](https://github.com/jcraigk/ruby_nano_rpc/wiki)).
|
4
4
|
|
5
5
|
To run a Nano node locally, see [Nano Docker Docs](https://github.com/clemahieu/raiblocks/wiki/Docker-node).
|
6
6
|
|
@@ -40,7 +40,19 @@ client = Nano.client
|
|
40
40
|
client = Nano::Client.new(host: 'mynanonode', port: 1234)
|
41
41
|
```
|
42
42
|
|
43
|
-
|
43
|
+
If you're using [Nanode](https://www.nanode.co/) or similar service that requires `Authorization` key in HTTP header, you can specify it using `auth`.
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
client = Nano::Client.new(auth: 'someauthkey')
|
47
|
+
```
|
48
|
+
|
49
|
+
You can also specify custom headers as a hash. These will be sent with every RPC request.
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
client = Nano::Client.new(headers: { 'Authorization' => 'someauthkey' })
|
53
|
+
```
|
54
|
+
|
55
|
+
Once the client is created, make a `call`, passing the action and data:
|
44
56
|
|
45
57
|
```ruby
|
46
58
|
client.call(:account_balance, account: 'xrb_someaddress1234')
|
data/lib/nano_rpc/client.rb
CHANGED
@@ -10,11 +10,13 @@ module Nano
|
|
10
10
|
class Client
|
11
11
|
include Nano::ApplicationHelper
|
12
12
|
|
13
|
-
|
13
|
+
attr_reader :host, :port, :auth, :headers
|
14
14
|
|
15
|
-
def initialize(host: 'localhost', port: 7076)
|
15
|
+
def initialize(host: 'localhost', port: 7076, auth: nil, headers: nil)
|
16
16
|
@host = host
|
17
17
|
@port = port
|
18
|
+
@auth = auth
|
19
|
+
@headers = headers
|
18
20
|
end
|
19
21
|
|
20
22
|
# Condense host/port on object inspection
|
@@ -53,14 +55,21 @@ module Nano
|
|
53
55
|
response = rest_client_post(url, params)
|
54
56
|
ensure_status_success!(response)
|
55
57
|
|
56
|
-
data = Nano::Response.new(JSON[response
|
58
|
+
data = Nano::Response.new(JSON[response&.body])
|
57
59
|
ensure_valid_response!(data)
|
58
60
|
|
59
61
|
data
|
60
62
|
end
|
61
63
|
|
64
|
+
def request_headers
|
65
|
+
h = headers || {}
|
66
|
+
h['Content-Type'] = 'json'
|
67
|
+
h['Authorization'] = auth unless auth.nil?
|
68
|
+
h
|
69
|
+
end
|
70
|
+
|
62
71
|
def rest_client_post(url, params)
|
63
|
-
RestClient.post(url, params
|
72
|
+
RestClient.post(url, params, request_headers)
|
64
73
|
rescue Errno::ECONNREFUSED
|
65
74
|
raise Nano::NodeConnectionFailure,
|
66
75
|
"Node connection failure at #{url}"
|
@@ -70,13 +79,17 @@ module Nano
|
|
70
79
|
end
|
71
80
|
|
72
81
|
def url
|
73
|
-
|
82
|
+
if host.start_with?('http://', 'https://')
|
83
|
+
"#{host}:#{port}"
|
84
|
+
else
|
85
|
+
"http://#{host}:#{port}"
|
86
|
+
end
|
74
87
|
end
|
75
88
|
|
76
89
|
def ensure_status_success!(response)
|
77
|
-
return if response
|
90
|
+
return if response&.code == 200
|
78
91
|
raise Nano::BadRequest,
|
79
|
-
"Error response from node: #{JSON[response
|
92
|
+
"Error response from node: #{JSON[response&.body]}"
|
80
93
|
end
|
81
94
|
|
82
95
|
def ensure_valid_response!(data)
|
@@ -60,6 +60,7 @@ module Nano::WalletHelper
|
|
60
60
|
def enter_password(password:)
|
61
61
|
password_enter(password: password).valid == 1
|
62
62
|
end
|
63
|
+
alias unlock enter_password
|
63
64
|
|
64
65
|
def export
|
65
66
|
Nano::Response.new(JSON[wallet_export.json])
|
@@ -137,11 +138,12 @@ module Nano::WalletHelper
|
|
137
138
|
end
|
138
139
|
alias set_representative representative_set
|
139
140
|
|
140
|
-
def send_nano(from:, to:, amount:, work: nil)
|
141
|
+
def send_nano(from:, to:, amount:, id: nil, work: nil)
|
141
142
|
send_currency(
|
142
143
|
source: from,
|
143
144
|
destination: to,
|
144
145
|
amount: amount,
|
146
|
+
id: id,
|
145
147
|
work: work
|
146
148
|
).block
|
147
149
|
end
|
@@ -33,7 +33,9 @@ class Nano::Wallet
|
|
33
33
|
proxy_method :payment_init
|
34
34
|
proxy_method :payment_end, required: %i[account]
|
35
35
|
proxy_method :receive, required: %i[account block], optional: %i[work]
|
36
|
-
proxy_method :send,
|
36
|
+
proxy_method :send,
|
37
|
+
required: %i[wallet source destination amount],
|
38
|
+
optional: %i[id work]
|
37
39
|
proxy_method :search_pending
|
38
40
|
proxy_method :wallet_add, required: %i[key], optional: %i[work]
|
39
41
|
proxy_method :wallet_balance_total
|
data/lib/nano_rpc/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nano_rpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Craig-Kuhn (JCK)
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -187,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
187
|
version: '0'
|
188
188
|
requirements: []
|
189
189
|
rubyforge_project:
|
190
|
-
rubygems_version: 2.7.
|
190
|
+
rubygems_version: 2.7.6
|
191
191
|
signing_key:
|
192
192
|
specification_version: 4
|
193
193
|
summary: RPC wrapper for Nano digital nodes written in Ruby
|