coinrpc 1.0.1 → 2.0.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/coinrpc.gemspec +5 -4
- data/lib/coinrpc/version.rb +1 -1
- data/lib/coinrpc.rb +23 -29
- metadata +36 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10cff07aebe3b64ba01cd8c59f50f7db97d455954adaef5813514bb9a4352079
|
4
|
+
data.tar.gz: 19b5357773239877bed09865571389b1a6897e6f65de2302acfb62ad55c940c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d95f608c8d69d345f2f72a83344afd6a43ef93d2cb121ae70f29039fe5358589e676c4d6a63c74dcf0e44688d4009f26a3f170d08c87baa4d7e844c21772328c
|
7
|
+
data.tar.gz: 6c9ca37fb9c28257037476754ef4fd9027191f9a7b48e82299b4e052c958569cb9363b558447b58070d58bac99776cda84e48a35fa60219593b028c3ba57bf62
|
data/coinrpc.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
3
|
+
require "coinrpc/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "coinrpc"
|
@@ -17,10 +17,11 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.required_ruby_version = ">= 2.
|
20
|
+
spec.required_ruby_version = ">= 2.6", "< 3.2"
|
21
21
|
|
22
22
|
spec.add_development_dependency "bundler", ">= 1.6", "< 3.0"
|
23
23
|
spec.add_development_dependency "rake", ">= 13.0", "< 14.0"
|
24
|
+
spec.add_runtime_dependency "json", "~> 2.0", ">= 2.3.1", "< 3.0"
|
24
25
|
spec.add_runtime_dependency "oj", ">= 3.10", "< 4.0"
|
25
|
-
spec.add_runtime_dependency "http", ">= 4.4", "< 5.
|
26
|
+
spec.add_runtime_dependency "http", ">= 4.4", "< 5.2"
|
26
27
|
end
|
data/lib/coinrpc/version.rb
CHANGED
data/lib/coinrpc.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "http"
|
2
|
+
require "oj"
|
3
|
+
require "json"
|
4
|
+
require "coinrpc/version"
|
5
|
+
|
6
|
+
# let OJ mimic JSON
|
7
|
+
Oj.mimic_JSON
|
4
8
|
|
5
9
|
module CoinRPC
|
6
10
|
class Client
|
11
|
+
|
12
|
+
JSONRPC_V1_1 = "1.1".freeze
|
13
|
+
JSONRPC_V2_0 = "2.0".freeze
|
14
|
+
|
7
15
|
def initialize(url)
|
8
16
|
|
9
17
|
urinfo = URI.parse(url)
|
@@ -15,34 +23,17 @@ module CoinRPC
|
|
15
23
|
|
16
24
|
def method_missing(method, *args)
|
17
25
|
|
18
|
-
@id += 1
|
19
|
-
|
20
26
|
fixed_method = method.to_s.gsub(/\_/,"").freeze
|
21
|
-
|
22
27
|
post_data = nil
|
23
28
|
|
24
|
-
if args.
|
29
|
+
if args[0].is_a?(Array) and args[0].size > 0 then
|
25
30
|
# batch request
|
26
|
-
|
27
|
-
post_data = []
|
28
|
-
|
29
|
-
args.each do |arg|
|
30
|
-
@id += 1
|
31
|
-
post_data << ({:jsonrpc => "2.0", :method => fixed_method, :params => arg, :id => @id})
|
32
|
-
end
|
33
|
-
|
31
|
+
post_data = args.map{|arg| {:jsonrpc => JSONRPC_V2_0, :method => fixed_method, :params => arg, :id => (@id += 1)} }
|
34
32
|
else
|
35
|
-
|
36
|
-
post_data = ({
|
37
|
-
:method => fixed_method,
|
38
|
-
:params => args,
|
39
|
-
:jsonrpc => "1.1",
|
40
|
-
:id => @id
|
41
|
-
})
|
42
|
-
|
33
|
+
post_data = {:method => fixed_method, :params => args, :jsonrpc => JSONRPC_V1_1, :id => (@id += 1)}
|
43
34
|
end
|
44
35
|
|
45
|
-
|
36
|
+
api_call(post_data)
|
46
37
|
|
47
38
|
end
|
48
39
|
|
@@ -51,14 +42,17 @@ module CoinRPC
|
|
51
42
|
|
52
43
|
response = @client.post("/", :body => Oj.dump(params, mode: :compat)).to_s
|
53
44
|
|
45
|
+
# this won"t work without Oj.mimic_JSON
|
54
46
|
result = Oj.strict_load(response, :decimal_class => BigDecimal)
|
55
47
|
|
56
|
-
raise result[
|
48
|
+
raise result["error"]["message"] if result.is_a?(Hash) and result.key?("error")
|
57
49
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
50
|
+
if result.is_a?(Hash) then
|
51
|
+
result["result"]
|
52
|
+
else
|
53
|
+
# batch call
|
54
|
+
result.map{|r| r["result"] || r["error"]}
|
55
|
+
end
|
62
56
|
|
63
57
|
end
|
64
58
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coinrpc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Atif Nazir
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -50,6 +50,32 @@ dependencies:
|
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '14.0'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: json
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '2.0'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 2.3.1
|
63
|
+
- - "<"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '3.0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '2.0'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.3.1
|
76
|
+
- - "<"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '3.0'
|
53
79
|
- !ruby/object:Gem::Dependency
|
54
80
|
name: oj
|
55
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,7 +105,7 @@ dependencies:
|
|
79
105
|
version: '4.4'
|
80
106
|
- - "<"
|
81
107
|
- !ruby/object:Gem::Version
|
82
|
-
version: '5.
|
108
|
+
version: '5.2'
|
83
109
|
type: :runtime
|
84
110
|
prerelease: false
|
85
111
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -89,7 +115,7 @@ dependencies:
|
|
89
115
|
version: '4.4'
|
90
116
|
- - "<"
|
91
117
|
- !ruby/object:Gem::Version
|
92
|
-
version: '5.
|
118
|
+
version: '5.2'
|
93
119
|
description: This Ruby Gem is a fast RPC client for Bitcoin Core style software, including
|
94
120
|
Dogecoin, Litecoin, and other similar software that implements Bitcoin Core RPC
|
95
121
|
interfaces.
|
@@ -111,7 +137,7 @@ homepage: https://github.com/doersf/coinrpc
|
|
111
137
|
licenses:
|
112
138
|
- MIT
|
113
139
|
metadata: {}
|
114
|
-
post_install_message:
|
140
|
+
post_install_message:
|
115
141
|
rdoc_options: []
|
116
142
|
require_paths:
|
117
143
|
- lib
|
@@ -119,18 +145,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
145
|
requirements:
|
120
146
|
- - ">="
|
121
147
|
- !ruby/object:Gem::Version
|
122
|
-
version: '2.
|
148
|
+
version: '2.6'
|
123
149
|
- - "<"
|
124
150
|
- !ruby/object:Gem::Version
|
125
|
-
version: '3.
|
151
|
+
version: '3.2'
|
126
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
153
|
requirements:
|
128
154
|
- - ">="
|
129
155
|
- !ruby/object:Gem::Version
|
130
156
|
version: '0'
|
131
157
|
requirements: []
|
132
|
-
rubygems_version: 3.
|
133
|
-
signing_key:
|
158
|
+
rubygems_version: 3.3.7
|
159
|
+
signing_key:
|
134
160
|
specification_version: 4
|
135
161
|
summary: A fast RPC client for Bitcoin Core style software.
|
136
162
|
test_files: []
|