block_io 1.0.8 → 1.2.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
  SHA1:
3
- metadata.gz: f9dc992c3a7aa1fc125e1eaf8b16d531318e31fd
4
- data.tar.gz: fdf9ae723127d8688e55cdc0c1ffc9f0eb263bda
3
+ metadata.gz: c7fc111ee1e745f444deeec8b30fa3c3b021fa8e
4
+ data.tar.gz: d124f3c04d871af2fad451df1488f8569303ff94
5
5
  SHA512:
6
- metadata.gz: 2ed068c30ce271df8745e66288f050b97f5f3ec3f68f3087c88ed3b7068059e29503edc1043521bb55d56f80dfbb57491ce709033e36ef021e850775ee94501f
7
- data.tar.gz: e9c4c14b3c2bbd292a20f8a018bd9089b20d5742115b0ebc9d6c2a707e4fac3583e1dc620fb4a580c5ab284b45a4ce3bc911dbd42ba6853930e93524d0e5e412
6
+ metadata.gz: 55794be8297122645d9b8b2b978c6377b3aba65b13b3fc155a810d455efc4e4326ac2283553f26e8c7c6bd55ca99bb8191877ad0ef663fcbc61c9b9168464a73
7
+ data.tar.gz: c05d90965618efe46d3e4dcee968503962fefd6f196ad34e8bc74fda971c11b16b641e6fa69287d0ae75fdbca848bb585aa83125cbf433880071eed014f3a41e
data/.gitignore CHANGED
@@ -1,2 +1,5 @@
1
1
  Gemfile.lock
2
2
  pkg
3
+ vendor/
4
+ .bundle/
5
+ *.gem
data/README.md CHANGED
@@ -14,10 +14,11 @@ And then execute:
14
14
 
15
15
  Or install it yourself as:
16
16
 
17
- $ gem install block_io -v=1.0.6
17
+ $ gem install block_io -v=1.2.0
18
18
 
19
19
  ## Changelog
20
20
 
21
+ *06/25/18*: Remove support for Ruby < 1.9.3 (OpenSSL::Cipher::Cipher). Remove connection_pool dependency.
21
22
  *01/21/15*: Added ability to sweep coins from one address to another.
22
23
  *11/04/14*: Fix issue with nil parameters in an API call.
23
24
  *11/03/14*: Reduce dependence on OpenSSL. PBKDF2 function is now Ruby-based. Should work well with Heroku's libraries.
data/block_io.gemspec CHANGED
@@ -23,7 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency "ecdsa", "~> 1.2", '>= 1.2.0'
24
24
  spec.add_runtime_dependency "httpclient", "~> 2.8", '>= 2.8.0'
25
25
  spec.add_runtime_dependency "oj", "~> 3.3", '>= 3.3.5'
26
- spec.add_runtime_dependency "oj_mimic_json"
27
- spec.add_runtime_dependency "connection_pool", "~> 2.2", '>= 2.2.1'
28
26
  spec.add_runtime_dependency "pbkdf2-ruby", '~> 0.2', '>= 0.2.1'
29
27
  end
data/examples/basic.rb CHANGED
@@ -1,9 +1,13 @@
1
- # creates a new destination address, withdraws from the default label to it, gets sent transactions, and the current price
1
+ # creates a new destination address, withdraws from the default label to it, gets updated address balances, gets sent/received transactions, and the current price
2
+ #
3
+ # basic example: $ API_KEY=TESTNET_API_KEY PIN=YOUR_SECRET_PIN ruby basic.rb
4
+ # bundler example: $ API_KEY=TESTNET_API_KEY PIN=YOUR_SECRET_PIN bundle exec ruby basic.rb
5
+ #
6
+ # adjust amount below if not using the Dogecoin Testnet
2
7
 
3
8
  require 'block_io'
4
9
 
5
- # please use the Dogecoin Testnet API key here
6
- puts BlockIo.set_options :api_key => 'YOURDOGECOINTESTNETAPIKEY', :pin => 'YOURSECRETPIN', :version => 2
10
+ puts BlockIo.set_options :api_key => ENV['API_KEY'], :pin => ENV['PIN'], :version => 2
7
11
 
8
12
  begin
9
13
  puts BlockIo.get_new_address(:label => 'testDest')
@@ -12,11 +16,13 @@ rescue Exception => e
12
16
  puts e.to_s
13
17
  end
14
18
 
15
- puts BlockIo.withdraw_from_labels(:from_labels => 'default', :to_label => 'testDest', :amount => '3.5')
19
+ puts BlockIo.withdraw_from_labels(:from_labels => 'default', :to_label => 'testDest', :amount => '2.5')
16
20
 
17
- puts BlockIo.get_address_by_label(:label => 'default')
21
+ puts BlockIo.get_address_balance(:labels => 'default,testDest')
18
22
 
19
23
  puts BlockIo.get_transactions(:type => 'sent') # API v2 only
20
24
 
25
+ puts BlockIo.get_transactions(:type => 'received') # API v2 only
26
+
21
27
  puts BlockIo.get_current_price(:base_price => 'BTC')
22
28
 
data/lib/block_io.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require 'block_io/version'
2
2
  require 'httpclient'
3
3
  require 'oj'
4
- require 'connection_pool'
5
4
  require 'ecdsa'
6
5
  require 'openssl'
7
6
  require 'digest'
@@ -12,9 +11,10 @@ require 'base64'
12
11
  module BlockIo
13
12
 
14
13
  @api_key = nil
15
- @base_url = "https://block.io/api/VERSION/API_CALL/?api_key="
14
+ @base_url = nil
16
15
  @pin = nil
17
16
  @encryptionKey = nil
17
+ @client = nil
18
18
  @conn_pool = nil
19
19
  @version = nil
20
20
 
@@ -22,9 +22,15 @@ module BlockIo
22
22
  # initialize BlockIo
23
23
  @api_key = args[:api_key]
24
24
  @pin = args[:pin]
25
+
25
26
  @encryptionKey = Helper.pinToAesKey(@pin) if !@pin.nil?
26
27
 
27
- @conn_pool = ConnectionPool.new(size: 1, timeout: 300) { h = HTTPClient.new; h.tcp_keepalive = true; h.ssl_config.ssl_version = :auto; h }
28
+ hostname = args[:hostname] || "block.io"
29
+ @base_url = "https://" << hostname << "/api/VERSION/API_CALL/?api_key="
30
+
31
+ @client = HTTPClient.new
32
+ @client.tcp_keepalive = true
33
+ @client.ssl_config.ssl_version = :auto
28
34
 
29
35
  @version = args[:version] || 2 # default version is 2
30
36
 
@@ -38,7 +44,6 @@ module BlockIo
38
44
  if ['withdraw', 'withdraw_from_address', 'withdraw_from_addresses', 'withdraw_from_user', 'withdraw_from_users', 'withdraw_from_label', 'withdraw_from_labels'].include?(m.to_s) then
39
45
  # need to withdraw from an address
40
46
  self.withdraw(args.first, m.to_s)
41
-
42
47
  elsif ['sweep_from_address'].include?(m.to_s) then
43
48
  # need to sweep from an address
44
49
  self.sweep(args.first, m.to_s)
@@ -128,17 +133,13 @@ module BlockIo
128
133
 
129
134
  body = nil
130
135
 
131
- @conn_pool.with do |hc|
132
- # prevent initiation of HTTPClients every time we make this call, use a connection_pool
133
-
134
- response = hc.post("#{@base_url.gsub('API_CALL',endpoint[0]).gsub('VERSION', 'v'+@version.to_s) + @api_key}", endpoint[1])
136
+ response = @client.post("#{@base_url.gsub('API_CALL',endpoint[0]).gsub('VERSION', 'v'+@version.to_s) + @api_key}", endpoint[1])
135
137
 
136
- begin
137
- body = Oj.load(response.body)
138
- raise Exception.new(body['data']['error_message']) if !body['status'].eql?('success')
139
- rescue
140
- raise Exception.new('Unknown error occurred. Please report this.')
141
- end
138
+ begin
139
+ body = Oj.load(response.body)
140
+ raise Exception.new(body['data']['error_message']) if !body['status'].eql?('success')
141
+ rescue
142
+ raise Exception.new('Unknown error occurred. Please report this.')
142
143
  end
143
144
 
144
145
  body
@@ -354,7 +355,7 @@ module BlockIo
354
355
  response = nil
355
356
 
356
357
  begin
357
- aes = OpenSSL::Cipher::Cipher.new(cipher_type)
358
+ aes = OpenSSL::Cipher.new(cipher_type)
358
359
  aes.decrypt
359
360
  aes.key = Base64.strict_decode64(b64_enc_key)
360
361
  aes.iv = iv if iv != nil
@@ -369,7 +370,7 @@ module BlockIo
369
370
 
370
371
  # Encrypts a block of data given an encryption key
371
372
  def self.encrypt(data, b64_enc_key, iv = nil, cipher_type = 'AES-256-ECB')
372
- aes = OpenSSL::Cipher::Cipher.new(cipher_type)
373
+ aes = OpenSSL::Cipher.new(cipher_type)
373
374
  aes.encrypt
374
375
  aes.key = Base64.strict_decode64(b64_enc_key)
375
376
  aes.iv = iv if iv != nil
@@ -1,3 +1,3 @@
1
1
  module BlockIo
2
- VERSION = "1.0.8"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,155 +1,121 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: block_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.2.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: 2017-09-10 00:00:00.000000000 Z
11
+ date: 2018-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: ecdsa
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.2'
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: 1.2.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - ~>
55
+ - - "~>"
56
56
  - !ruby/object:Gem::Version
57
57
  version: '1.2'
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: 1.2.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: httpclient
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ~>
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '2.8'
68
- - - '>='
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
70
  version: 2.8.0
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - ~>
75
+ - - "~>"
76
76
  - !ruby/object:Gem::Version
77
77
  version: '2.8'
78
- - - '>='
78
+ - - ">="
79
79
  - !ruby/object:Gem::Version
80
80
  version: 2.8.0
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: oj
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ~>
85
+ - - "~>"
86
86
  - !ruby/object:Gem::Version
87
87
  version: '3.3'
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: 3.3.5
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '3.3'
98
- - - '>='
98
+ - - ">="
99
99
  - !ruby/object:Gem::Version
100
100
  version: 3.3.5
101
- - !ruby/object:Gem::Dependency
102
- name: oj_mimic_json
103
- requirement: !ruby/object:Gem::Requirement
104
- requirements:
105
- - - '>='
106
- - !ruby/object:Gem::Version
107
- version: '0'
108
- type: :runtime
109
- prerelease: false
110
- version_requirements: !ruby/object:Gem::Requirement
111
- requirements:
112
- - - '>='
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- - !ruby/object:Gem::Dependency
116
- name: connection_pool
117
- requirement: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - ~>
120
- - !ruby/object:Gem::Version
121
- version: '2.2'
122
- - - '>='
123
- - !ruby/object:Gem::Version
124
- version: 2.2.1
125
- type: :runtime
126
- prerelease: false
127
- version_requirements: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ~>
130
- - !ruby/object:Gem::Version
131
- version: '2.2'
132
- - - '>='
133
- - !ruby/object:Gem::Version
134
- version: 2.2.1
135
101
  - !ruby/object:Gem::Dependency
136
102
  name: pbkdf2-ruby
137
103
  requirement: !ruby/object:Gem::Requirement
138
104
  requirements:
139
- - - ~>
105
+ - - "~>"
140
106
  - !ruby/object:Gem::Version
141
107
  version: '0.2'
142
- - - '>='
108
+ - - ">="
143
109
  - !ruby/object:Gem::Version
144
110
  version: 0.2.1
145
111
  type: :runtime
146
112
  prerelease: false
147
113
  version_requirements: !ruby/object:Gem::Requirement
148
114
  requirements:
149
- - - ~>
115
+ - - "~>"
150
116
  - !ruby/object:Gem::Version
151
117
  version: '0.2'
152
- - - '>='
118
+ - - ">="
153
119
  - !ruby/object:Gem::Version
154
120
  version: 0.2.1
155
121
  description: This Ruby Gem is the official reference client for the Block.io payments
@@ -161,7 +127,7 @@ executables: []
161
127
  extensions: []
162
128
  extra_rdoc_files: []
163
129
  files:
164
- - .gitignore
130
+ - ".gitignore"
165
131
  - Gemfile
166
132
  - LICENSE
167
133
  - README.md
@@ -183,17 +149,17 @@ require_paths:
183
149
  - lib
184
150
  required_ruby_version: !ruby/object:Gem::Requirement
185
151
  requirements:
186
- - - '>='
152
+ - - ">="
187
153
  - !ruby/object:Gem::Version
188
154
  version: '0'
189
155
  required_rubygems_version: !ruby/object:Gem::Requirement
190
156
  requirements:
191
- - - '>='
157
+ - - ">="
192
158
  - !ruby/object:Gem::Version
193
159
  version: '0'
194
160
  requirements: []
195
161
  rubyforge_project:
196
- rubygems_version: 2.0.14.1
162
+ rubygems_version: 2.6.11
197
163
  signing_key:
198
164
  specification_version: 4
199
165
  summary: An easy to use Dogecoin, Bitcoin, Litecoin wallet API by Block.io. Sign up