nano_rpc 0.24.0 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 398fcb208cafcf1794eb86fa3b702c71c6f407269f8e6b5fc62f4aba01723962
4
- data.tar.gz: 5f1aba5ff4388f0d38f27bde71e8f98d7828de87c19200a07cc55ead2c4b4420
3
+ metadata.gz: ab9b6be210c8fdb43aa96f222c19ad183399eaa2c90a8fc9f2eb2097c536ea73
4
+ data.tar.gz: 55d91925f916c4f6c1263c8fd3c20b6cf5f7f75ffdba0aff7190d88d35aac55b
5
5
  SHA512:
6
- metadata.gz: cf3758cc36b0ac0056361f96a395b9cd436b5da8e442bdd98e5469b67c780761873f20dbd079ae4c6b226b00cda44eefe2546d6feb04b98b17e4ea8b0179a1c2
7
- data.tar.gz: ae7d2e3f7027ac6ec9b284844ae61d965ed1337c374b12a34010c331983f319dc47c003e2d1f944fb77b5806ade679456bba66ec723853542a9eb32899651752
6
+ metadata.gz: 72abd38cbfd8d95a25b44ac5125e9dab3572d2833898e2ca3f29f9cdb6a581232920108686c3b4f3c4f6084a8b7688e0929cbe0682bd4211c7c0b2f3658f7d6a
7
+ data.tar.gz: f10b7c61cf10d6e7d7b91646cbbfda600a8dab1e513a7f027dc0a9d93e12a7f45c5fbeeea3376ac1b7d50f58cb85134663dc580bf7682a90ffd9ca9d67aab8b2
data/.rubocop.yml CHANGED
@@ -1,7 +1,15 @@
1
1
  require: rubocop-rspec
2
+ RSpec/ExampleLength:
3
+ Max: 8
4
+ RSpec/MultipleExpectations:
5
+ Enabled: false
6
+ RSpec/NestedGroups:
7
+ Max: 4
8
+ RSpec/SubjectStub:
9
+ Enabled: false
2
10
 
3
11
  AllCops:
4
- TargetRubyVersion: 2.5.3
12
+ TargetRubyVersion: 2.6.1
5
13
  Exclude:
6
14
  - bin/*
7
15
  - nano_rpc.gemspec
data/README.md CHANGED
@@ -12,7 +12,8 @@ To run a Nano node locally, see [Nano Docker Docs](https://github.com/clemahieu/
12
12
 
13
13
  | Gem version | Nanocurrency version |
14
14
  |-------------|----------------------|
15
- | 0.24 | >= 17.0 |
15
+ | 0.25 | >= 18.0 |
16
+ | 0.24 | >= 17.0, < 18.0 |
16
17
  | 0.23 | >= 16.0, < 17.0 |
17
18
  | 0.20 | >= 15.0, < 16.0 |
18
19
  | 0.19 | >= 14.2, < 15.0 |
data/lib/nano_rpc.rb CHANGED
@@ -13,9 +13,9 @@ require 'nano_rpc/methods/node_methods'
13
13
  require 'nano_rpc/methods/wallet_methods'
14
14
 
15
15
  require 'nano_rpc/proxy'
16
- require 'nano_rpc/proxies/account'
17
- require 'nano_rpc/proxies/accounts'
18
- require 'nano_rpc/proxies/wallet'
16
+ require 'nano_rpc/account'
17
+ require 'nano_rpc/accounts'
18
+ require 'nano_rpc/wallet'
19
19
 
20
20
  require 'nano_rpc/node'
21
21
  require 'nano_rpc/errors'
File without changes
File without changes
@@ -9,5 +9,5 @@ module NanoRpc
9
9
  class InvalidRequest < Error; end
10
10
  class MissingParameters < Error; end
11
11
  class NodeConnectionFailure < Error; end
12
- class NodeOpenTimeout < Error; end
12
+ class NodeTimeout < Error; end
13
13
  end
@@ -14,8 +14,12 @@ module NanoRpc::NodeHelper
14
14
  NanoRpc::Accounts.new(addresses, node: self)
15
15
  end
16
16
 
17
- def create_wallet
18
- NanoRpc::Wallet.new(wallet_create.wallet, node: self)
17
+ def clear_stats
18
+ stats_clear.success == ''
19
+ end
20
+
21
+ def create_wallet(seed: nil)
22
+ NanoRpc::Wallet.new(wallet_create(seed: seed).wallet, node: self)
19
23
  end
20
24
 
21
25
  def knano_from_raw(amount:)
@@ -39,8 +39,8 @@ module NanoRpc::WalletHelper
39
39
  password_change(password: new_password).changed == 1
40
40
  end
41
41
 
42
- def change_seed(new_seed:)
43
- wallet_change_seed(seed: new_seed).success == ''
42
+ def change_seed(new_seed:, count: 0)
43
+ wallet_change_seed(seed: new_seed, count: count).success == ''
44
44
  end
45
45
 
46
46
  def contains?(account:)
@@ -58,7 +58,7 @@ module NanoRpc::WalletHelper
58
58
  end
59
59
 
60
60
  def destroy
61
- wallet_destroy == {}
61
+ wallet_destroy.destroyed == 1
62
62
  end
63
63
 
64
64
  def enter_password(password:)
@@ -74,6 +74,10 @@ module NanoRpc::WalletHelper
74
74
  wallet_frontiers.frontiers
75
75
  end
76
76
 
77
+ def history(modified_since: 0)
78
+ wallet_history(modified_since: modified_since).history
79
+ end
80
+
77
81
  def init_payment
78
82
  payment_init.status == 'Ready'
79
83
  end
@@ -39,7 +39,8 @@ module NanoRpc::NodeMethods
39
39
  },
40
40
  bootstrap_status: {},
41
41
  chain: {
42
- required: %i[block count]
42
+ required: %i[block count],
43
+ optional: %i[offset reverse]
43
44
  },
44
45
  confirmation_active: {},
45
46
  confirmation_history: {},
@@ -81,12 +82,15 @@ module NanoRpc::NodeMethods
81
82
  payment_wait: {
82
83
  required: %i[account amount timeout]
83
84
  },
84
- peers: {},
85
+ peers: {
86
+ optional: %i[peer_details]
87
+ },
85
88
  pending_exists: {
86
89
  required: %i[hash]
87
90
  },
88
91
  process: {
89
- required: %i[block]
92
+ required: %i[block],
93
+ optional: %i[force subtype]
90
94
  },
91
95
  rai_from_raw: {
92
96
  required: %i[amount]
@@ -108,12 +112,17 @@ module NanoRpc::NodeMethods
108
112
  required: %i[wallet]
109
113
  },
110
114
  search_pending_all: {},
115
+ sign: {
116
+ optional: %i[account hash key wallet]
117
+ },
111
118
  stats: {
112
119
  required: %i[type]
113
120
  },
121
+ stats_clear: {},
114
122
  stop: {},
115
123
  successors: {
116
- required: %i[block count]
124
+ required: %i[block count],
125
+ optional: %i[offset reverse]
117
126
  },
118
127
  unchecked: {
119
128
  required: %i[count]
@@ -125,8 +134,11 @@ module NanoRpc::NodeMethods
125
134
  unchecked_keys: {
126
135
  required: %i[key count]
127
136
  },
137
+ uptime: {},
128
138
  version: {},
129
- wallet_create: {},
139
+ wallet_create: {
140
+ optional: %i[seed]
141
+ },
130
142
  work_cancel: {
131
143
  required: %i[hash]
132
144
  },
@@ -49,7 +49,8 @@ module NanoRpc::WalletMethods
49
49
  optional: %i[threshold]
50
50
  },
51
51
  wallet_change_seed: {
52
- required: %i[seed]
52
+ required: %i[seed],
53
+ optional: %i[count]
53
54
  },
54
55
  wallet_contains: {
55
56
  required: %i[account]
@@ -57,6 +58,9 @@ module NanoRpc::WalletMethods
57
58
  wallet_destroy: {},
58
59
  wallet_export: {},
59
60
  wallet_frontiers: {},
61
+ wallet_history: {
62
+ optional: %i[modified_since]
63
+ },
60
64
  wallet_info: {},
61
65
  wallet_ledger: {},
62
66
  wallet_locked: {},
@@ -66,7 +70,8 @@ module NanoRpc::WalletMethods
66
70
  },
67
71
  wallet_representative: {},
68
72
  wallet_representative_set: {
69
- required: %i[representative]
73
+ required: %i[representative],
74
+ optional: %i[update_existing_accounts]
70
75
  },
71
76
  wallet_republish: {
72
77
  required: %i[count]
data/lib/nano_rpc/node.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'rest-client'
2
+ require 'http'
3
3
  require 'json'
4
4
 
5
5
  module NanoRpc
@@ -13,7 +13,7 @@ class NanoRpc::Node
13
13
  include NanoRpc::NodeMethods
14
14
  include NanoRpc::Proxy
15
15
 
16
- attr_reader :host, :port, :auth, :headers, :node, :timeout
16
+ attr_reader :host, :port
17
17
 
18
18
  DEFAULT_TIMEOUT = 60
19
19
 
@@ -66,39 +66,29 @@ class NanoRpc::Node
66
66
  end
67
67
 
68
68
  def rpc_post(params)
69
- response = rest_client_post(params)
70
- ensure_status_success(response)
71
- data = NanoRpc::Response.new(JSON[response&.body])
69
+ data = NanoRpc::Response.new(node_response(params))
72
70
  ensure_valid_response(data)
73
71
 
74
72
  data
75
73
  end
76
74
 
77
- def request_headers
78
- h = headers || {}
75
+ def headers
76
+ h = @headers || {}
79
77
  h['Content-Type'] = 'json'
80
- h['Authorization'] = auth unless auth.nil?
78
+ h['Authorization'] = @auth if @auth
81
79
  h
82
80
  end
83
81
 
84
- def rest_client_post(params)
85
- execute_post(params)
86
- rescue Errno::ECONNREFUSED
87
- raise NanoRpc::NodeConnectionFailure,
88
- "Node connection failure at #{url}"
89
- rescue RestClient::Exceptions::OpenTimeout
90
- raise NanoRpc::NodeOpenTimeout,
91
- 'Node failed to respond in time'
82
+ def node_response(params)
83
+ JSON[http_post(params).body.to_s]
92
84
  end
93
85
 
94
- def execute_post(params)
95
- RestClient::Request.execute(
96
- method: :post,
97
- url: url,
98
- headers: request_headers,
99
- payload: params.to_json,
100
- timeout: timeout
101
- )
86
+ def http_post(params)
87
+ HTTP.timeout(@timeout).post(url, headers: headers, body: params.to_json)
88
+ rescue HTTP::ConnectionError
89
+ raise NanoRpc::NodeConnectionFailure, "Node unreachable at #{url}"
90
+ rescue HTTP::TimeoutError
91
+ raise NanoRpc::NodeTimeout, "Node timeout after #{@timeout} seconds"
102
92
  end
103
93
 
104
94
  def url
@@ -109,15 +99,8 @@ class NanoRpc::Node
109
99
  end
110
100
  end
111
101
 
112
- def ensure_status_success(response)
113
- return if response&.code == 200
114
- raise NanoRpc::BadRequest,
115
- "Error response from node: #{JSON[response&.body]}"
116
- end
117
-
118
102
  def ensure_valid_response(data)
119
103
  return unless data['error']
120
- raise NanoRpc::InvalidRequest,
121
- "Invalid request: #{data['error']}"
104
+ raise NanoRpc::InvalidRequest, "Invalid request: #{data['error']}"
122
105
  end
123
106
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module NanoRpc
3
- VERSION = '0.24.0'
3
+ VERSION = '0.25.0'
4
4
  end
File without changes
data/nano_rpc.gemspec CHANGED
@@ -34,5 +34,5 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency 'simplecov-rcov', '~> 0.2.3'
35
35
 
36
36
  spec.add_runtime_dependency 'hashie', '~> 3.6', '>= 3.6.0'
37
- spec.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.2'
37
+ spec.add_runtime_dependency 'http', '~> 4.0', '>= 4.0.5'
38
38
  end
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.24.0
4
+ version: 0.25.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-12-19 00:00:00.000000000 Z
11
+ date: 2019-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -157,25 +157,25 @@ dependencies:
157
157
  - !ruby/object:Gem::Version
158
158
  version: '3.6'
159
159
  - !ruby/object:Gem::Dependency
160
- name: rest-client
160
+ name: http
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '2.0'
165
+ version: '4.0'
166
166
  - - ">="
167
167
  - !ruby/object:Gem::Version
168
- version: 2.0.2
168
+ version: 4.0.5
169
169
  type: :runtime
170
170
  prerelease: false
171
171
  version_requirements: !ruby/object:Gem::Requirement
172
172
  requirements:
173
173
  - - "~>"
174
174
  - !ruby/object:Gem::Version
175
- version: '2.0'
175
+ version: '4.0'
176
176
  - - ">="
177
177
  - !ruby/object:Gem::Version
178
- version: 2.0.2
178
+ version: 4.0.5
179
179
  description: An RPC wrapper for Nano digital currency nodes. Arbitrary RPC access
180
180
  is provided along with proxy objects that expose helper methods.
181
181
  email:
@@ -194,6 +194,8 @@ files:
194
194
  - bin/console
195
195
  - bin/setup
196
196
  - lib/nano_rpc.rb
197
+ - lib/nano_rpc/account.rb
198
+ - lib/nano_rpc/accounts.rb
197
199
  - lib/nano_rpc/errors.rb
198
200
  - lib/nano_rpc/helpers/account_helper.rb
199
201
  - lib/nano_rpc/helpers/accounts_helper.rb
@@ -206,12 +208,10 @@ files:
206
208
  - lib/nano_rpc/methods/wallet_methods.rb
207
209
  - lib/nano_rpc/node.rb
208
210
  - lib/nano_rpc/numeric.rb
209
- - lib/nano_rpc/proxies/account.rb
210
- - lib/nano_rpc/proxies/accounts.rb
211
- - lib/nano_rpc/proxies/wallet.rb
212
211
  - lib/nano_rpc/proxy.rb
213
212
  - lib/nano_rpc/response.rb
214
213
  - lib/nano_rpc/version.rb
214
+ - lib/nano_rpc/wallet.rb
215
215
  - nano_rpc.gemspec
216
216
  homepage: https://github.com/jcraigk/ruby_nano_rpc
217
217
  licenses:
@@ -232,8 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  - !ruby/object:Gem::Version
233
233
  version: '0'
234
234
  requirements: []
235
- rubyforge_project:
236
- rubygems_version: 2.7.8
235
+ rubygems_version: 3.0.2
237
236
  signing_key:
238
237
  specification_version: 4
239
238
  summary: RPC wrapper for Nano digital nodes written in Ruby