coinrpc 1.0.3 → 2.0.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: 0e6758d40043fc3414515ea9a7e9e772bb2a1e4fc4aa7fa29eff8e0b81d85254
4
- data.tar.gz: d9be85a33cc6844570370b8613a5067857ff10ae1646eed3bad7409a29d970a2
3
+ metadata.gz: 10cff07aebe3b64ba01cd8c59f50f7db97d455954adaef5813514bb9a4352079
4
+ data.tar.gz: 19b5357773239877bed09865571389b1a6897e6f65de2302acfb62ad55c940c1
5
5
  SHA512:
6
- metadata.gz: e6a72814efa91ef47cb65d4444b9fcaf870be25026b1e423b30603720d2b070ad2cee9899ba6f96e4c883c516257873e7e3d6cb0812e78f86acca06d377be713
7
- data.tar.gz: 7790d3f541b1d516e2c6e6285ee42acb63074731a9664059802cd0184a0f1ebc2b5e97d3dd297097e097a7e2813b13a4402aa1a55747daf6e1930b8862291efe
6
+ metadata.gz: d95f608c8d69d345f2f72a83344afd6a43ef93d2cb121ae70f29039fe5358589e676c4d6a63c74dcf0e44688d4009f26a3f170d08c87baa4d7e844c21772328c
7
+ data.tar.gz: 6c9ca37fb9c28257037476754ef4fd9027191f9a7b48e82299b4e052c958569cb9363b558447b58070d58bac99776cda84e48a35fa60219593b028c3ba57bf62
data/coinrpc.gemspec CHANGED
@@ -1,6 +1,6 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'coinrpc/version'
3
+ require "coinrpc/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "coinrpc"
@@ -17,11 +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.4", "< 3.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
24
  spec.add_runtime_dependency "json", "~> 2.0", ">= 2.3.1", "< 3.0"
25
25
  spec.add_runtime_dependency "oj", ">= 3.10", "< 4.0"
26
- spec.add_runtime_dependency "http", ">= 4.4", "< 5.1"
26
+ spec.add_runtime_dependency "http", ">= 4.4", "< 5.2"
27
27
  end
@@ -1,3 +1,3 @@
1
1
  module CoinRPC
2
- VERSION = "1.0.3"
2
+ VERSION = "2.0.0"
3
3
  end
data/lib/coinrpc.rb CHANGED
@@ -1,13 +1,17 @@
1
- require 'http'
2
- require 'oj'
3
- require 'json'
4
- require 'coinrpc/version'
1
+ require "http"
2
+ require "oj"
3
+ require "json"
4
+ require "coinrpc/version"
5
5
 
6
6
  # let OJ mimic JSON
7
7
  Oj.mimic_JSON
8
8
 
9
9
  module CoinRPC
10
10
  class Client
11
+
12
+ JSONRPC_V1_1 = "1.1".freeze
13
+ JSONRPC_V2_0 = "2.0".freeze
14
+
11
15
  def initialize(url)
12
16
 
13
17
  urinfo = URI.parse(url)
@@ -19,34 +23,17 @@ module CoinRPC
19
23
 
20
24
  def method_missing(method, *args)
21
25
 
22
- @id += 1
23
-
24
26
  fixed_method = method.to_s.gsub(/\_/,"").freeze
25
-
26
27
  post_data = nil
27
28
 
28
- if args.first.is_a?(Array) and args.first.size > 0 then
29
+ if args[0].is_a?(Array) and args[0].size > 0 then
29
30
  # batch request
30
-
31
- post_data = []
32
-
33
- args.each do |arg|
34
- @id += 1
35
- post_data << ({:jsonrpc => "2.0", :method => fixed_method, :params => arg, :id => @id})
36
- end
37
-
31
+ post_data = args.map{|arg| {:jsonrpc => JSONRPC_V2_0, :method => fixed_method, :params => arg, :id => (@id += 1)} }
38
32
  else
39
-
40
- post_data = ({
41
- :method => fixed_method,
42
- :params => args,
43
- :jsonrpc => "1.1",
44
- :id => @id
45
- })
46
-
33
+ post_data = {:method => fixed_method, :params => args, :jsonrpc => JSONRPC_V1_1, :id => (@id += 1)}
47
34
  end
48
35
 
49
- return api_call(post_data)
36
+ api_call(post_data)
50
37
 
51
38
  end
52
39
 
@@ -55,15 +42,17 @@ module CoinRPC
55
42
 
56
43
  response = @client.post("/", :body => Oj.dump(params, mode: :compat)).to_s
57
44
 
58
- # this won't work without Oj.mimic_JSON
45
+ # this won"t work without Oj.mimic_JSON
59
46
  result = Oj.strict_load(response, :decimal_class => BigDecimal)
60
47
 
61
- raise result['error']['message'] if !result.is_a?(Array) and result['error']
62
-
63
- return result['result'] if result.is_a?(Hash)
48
+ raise result["error"]["message"] if result.is_a?(Hash) and result.key?("error")
64
49
 
65
- # batch call
66
- return result.map{|r| r['result'] || r['error']}
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
67
56
 
68
57
  end
69
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: 1.0.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atif Nazir
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-26 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -105,7 +105,7 @@ dependencies:
105
105
  version: '4.4'
106
106
  - - "<"
107
107
  - !ruby/object:Gem::Version
108
- version: '5.1'
108
+ version: '5.2'
109
109
  type: :runtime
110
110
  prerelease: false
111
111
  version_requirements: !ruby/object:Gem::Requirement
@@ -115,7 +115,7 @@ dependencies:
115
115
  version: '4.4'
116
116
  - - "<"
117
117
  - !ruby/object:Gem::Version
118
- version: '5.1'
118
+ version: '5.2'
119
119
  description: This Ruby Gem is a fast RPC client for Bitcoin Core style software, including
120
120
  Dogecoin, Litecoin, and other similar software that implements Bitcoin Core RPC
121
121
  interfaces.
@@ -145,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - ">="
147
147
  - !ruby/object:Gem::Version
148
- version: '2.4'
148
+ version: '2.6'
149
149
  - - "<"
150
150
  - !ruby/object:Gem::Version
151
151
  version: '3.2'
@@ -155,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  - !ruby/object:Gem::Version
156
156
  version: '0'
157
157
  requirements: []
158
- rubygems_version: 3.3.3
158
+ rubygems_version: 3.3.7
159
159
  signing_key:
160
160
  specification_version: 4
161
161
  summary: A fast RPC client for Bitcoin Core style software.