nano_rpc 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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