raiblocks_rpc 0.3.0 → 0.4.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 +4 -4
- data/Gemfile +1 -0
- data/README.md +65 -35
- data/bin/console +0 -3
- data/lib/raiblocks/client.rb +59 -0
- data/lib/{raiblocks_rpc → raiblocks}/errors.rb +2 -1
- data/lib/raiblocks/helpers/account_proxy_helper.rb +70 -0
- data/lib/raiblocks/helpers/accounts_proxy_helper.rb +48 -0
- data/lib/raiblocks/helpers/node_proxy_helper.rb +42 -0
- data/lib/raiblocks/helpers/wallet_proxy_helper.rb +105 -0
- data/lib/raiblocks/proxies/account.rb +44 -0
- data/lib/raiblocks/proxies/accounts.rb +25 -0
- data/lib/raiblocks/proxies/node.rb +55 -0
- data/lib/raiblocks/proxies/wallet.rb +47 -0
- data/lib/raiblocks/proxy.rb +100 -0
- data/lib/raiblocks/proxy_context.rb +80 -0
- data/lib/raiblocks/response.rb +25 -0
- data/lib/raiblocks/version.rb +4 -0
- data/lib/raiblocks_rpc.rb +14 -17
- data/raiblocks_rpc.gemspec +3 -3
- metadata +22 -19
- data/lib/raiblocks_rpc/client.rb +0 -45
- data/lib/raiblocks_rpc/proxies/account.rb +0 -50
- data/lib/raiblocks_rpc/proxies/accounts.rb +0 -32
- data/lib/raiblocks_rpc/proxies/network.rb +0 -37
- data/lib/raiblocks_rpc/proxies/node.rb +0 -35
- data/lib/raiblocks_rpc/proxies/util.rb +0 -16
- data/lib/raiblocks_rpc/proxies/wallet.rb +0 -48
- data/lib/raiblocks_rpc/proxy.rb +0 -130
- data/lib/raiblocks_rpc/response.rb +0 -21
- data/lib/raiblocks_rpc/version.rb +0 -4
data/lib/raiblocks_rpc/proxy.rb
DELETED
@@ -1,130 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class RaiblocksRpc::Proxy
|
3
|
-
attr_accessor :params, :param_signature, :m
|
4
|
-
|
5
|
-
private
|
6
|
-
|
7
|
-
def proxy_methods
|
8
|
-
raise 'Child class must override `proxy_methods` method'
|
9
|
-
end
|
10
|
-
|
11
|
-
def proxy_params
|
12
|
-
{}
|
13
|
-
end
|
14
|
-
|
15
|
-
# Define proxy methods based on #proxy_methods
|
16
|
-
def method_missing(m, *args, &_block)
|
17
|
-
set_accessors(m)
|
18
|
-
if valid_proxy_method?
|
19
|
-
define_proxy_method(m)
|
20
|
-
return send(m, args.first)
|
21
|
-
end
|
22
|
-
|
23
|
-
super
|
24
|
-
end
|
25
|
-
|
26
|
-
def respond_to_missing?(m, include_private = false)
|
27
|
-
set_accessors(m)
|
28
|
-
valid_proxy_method? || super
|
29
|
-
end
|
30
|
-
|
31
|
-
# Valid proxy methods are:
|
32
|
-
# (1) The raw name of an `action` as passed to the RPC server
|
33
|
-
# (e.g. `account_balance`)
|
34
|
-
# (2) An abbreviation of an `action` such as `balance` from `account_balance`
|
35
|
-
# where `account` is the lowercase name of the encapsulating class.
|
36
|
-
def valid_proxy_method?
|
37
|
-
rpc_action? || rpc_action_abbrev?
|
38
|
-
end
|
39
|
-
|
40
|
-
def rpc_action
|
41
|
-
return method_expansion if rpc_action_abbrev?
|
42
|
-
m
|
43
|
-
end
|
44
|
-
|
45
|
-
def rpc_action?
|
46
|
-
proxy_method_names.include?(m)
|
47
|
-
end
|
48
|
-
|
49
|
-
def rpc_action_abbrev?
|
50
|
-
proxy_method_names.each do |proxy_m|
|
51
|
-
proxy_m = proxy_m.to_s
|
52
|
-
next unless proxy_m.start_with?(action_prefix)
|
53
|
-
return true if m.to_s == action_abbrev(proxy_m)
|
54
|
-
end
|
55
|
-
|
56
|
-
false
|
57
|
-
end
|
58
|
-
|
59
|
-
def action_abbrev(proxy_m)
|
60
|
-
proxy_m.to_s[action_prefix.size..-1]
|
61
|
-
end
|
62
|
-
|
63
|
-
def method_expansion
|
64
|
-
"#{action_prefix}#{m}"
|
65
|
-
end
|
66
|
-
|
67
|
-
def proxy_method_names
|
68
|
-
@proxy_method_names ||= proxy_methods.keys
|
69
|
-
end
|
70
|
-
|
71
|
-
def action_prefix
|
72
|
-
@action_prefix ||= self.class.name.split('::').last.downcase + '_'
|
73
|
-
end
|
74
|
-
|
75
|
-
def define_proxy_method(m)
|
76
|
-
self.class.send(:define_method, m) do |opts = {}|
|
77
|
-
set_accessors(m, opts)
|
78
|
-
populate_and_validate_params!
|
79
|
-
RaiblocksRpc.client.call(rpc_action, params)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def set_accessors(m, opts = nil)
|
84
|
-
self.m = m
|
85
|
-
self.param_signature = proxy_methods[m.to_sym]
|
86
|
-
self.params = validate_opts!(opts)
|
87
|
-
end
|
88
|
-
|
89
|
-
def populate_and_validate_params!
|
90
|
-
proxy_params.each { |k, v| self.params[k] ||= send(v) }
|
91
|
-
validate_params!
|
92
|
-
end
|
93
|
-
|
94
|
-
def validate_params!
|
95
|
-
return if param_signature.nil?
|
96
|
-
ensure_required_params!
|
97
|
-
ensure_no_forbidden_params!
|
98
|
-
end
|
99
|
-
|
100
|
-
def allowed_params
|
101
|
-
proxy_params.keys +
|
102
|
-
(param_signature[:required] || []) +
|
103
|
-
(param_signature[:optional] || [])
|
104
|
-
end
|
105
|
-
|
106
|
-
def validate_opts!(opts)
|
107
|
-
return opts if opts.is_a?(Hash)
|
108
|
-
return {} if opts.nil?
|
109
|
-
raise RaiblocksRpc::InvalidParameterType,
|
110
|
-
'You must pass a hash to an action method'
|
111
|
-
end
|
112
|
-
|
113
|
-
def params_keys
|
114
|
-
params.keys.map(&:to_sym)
|
115
|
-
end
|
116
|
-
|
117
|
-
def ensure_required_params!
|
118
|
-
missing_params = param_signature[:required] - params_keys
|
119
|
-
return unless missing_params.any?
|
120
|
-
raise RaiblocksRpc::MissingParameters,
|
121
|
-
"Missing required parameter(s): #{missing_params.join(', ')}"
|
122
|
-
end
|
123
|
-
|
124
|
-
def ensure_no_forbidden_params!
|
125
|
-
forbidden_params = params_keys - allowed_params
|
126
|
-
return unless forbidden_params.any?
|
127
|
-
raise RaiblocksRpc::ForbiddenParameter,
|
128
|
-
"Forbidden parameter(s) passed: #{forbidden_params.join(', ')}"
|
129
|
-
end
|
130
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'hashie'
|
3
|
-
|
4
|
-
class RaiblocksRpc::Response < Hash
|
5
|
-
include ::Hashie::Extensions::MergeInitializer
|
6
|
-
include ::Hashie::Extensions::IndifferentAccess
|
7
|
-
include ::Hashie::Extensions::MethodAccess
|
8
|
-
|
9
|
-
def initialize(hash = {})
|
10
|
-
super
|
11
|
-
coerce_integers
|
12
|
-
end
|
13
|
-
|
14
|
-
def coerce_integers
|
15
|
-
merge!(self) do |_k, v|
|
16
|
-
Integer(v)
|
17
|
-
rescue ArgumentError
|
18
|
-
v
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|