sibit 0.20.3 → 0.20.4

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: a10cbcbf86d4a0c612ebba219e7e5d0a09480444280a106fd47bb41cbadd0405
4
- data.tar.gz: 5c3ede973fe824a8f247099c6980b938dc83b07481553bf7925678837553d4ad
3
+ metadata.gz: 5fce6b2ed89b0207cda60852aa0308c19e176725782e6821141c73a24dcdb2f9
4
+ data.tar.gz: 807d723a53772eb71002a0223030795ab47710952979398b207b4d87c58fca75
5
5
  SHA512:
6
- metadata.gz: 4bd040eb2e985bd9af773e4bcda1108939cecbcea6b4719f3779eba70a3ce3d2bd69c1deb5c8a748eaaeee85f98fcc6ac5f447189ef635befbd75d68abde6aff
7
- data.tar.gz: ee1ba5bc4c7bd03d0f975a38c0d2f5d315804eb3444dad26b93511fed19ce3092420907d0a338d4d871dc1abc7fd9307bc3d9f4f7a97a46a6a5824be52c13c62
6
+ metadata.gz: 5186670b03e26882ab1863b056d2951e0116bd71e4f4ef1ca213ea4e08958b85bac00baeb9763ab24c3ffce35bcc280d282d5ab89621a38874f53df530308c66
7
+ data.tar.gz: 9c816996ea654affba93c3d7d4e42b46559a7ff8a73f74765f28331c991038f2af4aa0361deea5b3332f7a9b44896f450e666888adef13414a15dbd9bb5a3523
@@ -1,12 +1,13 @@
1
1
  AllCops:
2
+ NewCops: enable
2
3
  Exclude:
3
4
  - 'assets/**/*'
4
5
  DisplayCopNames: true
5
- TargetRubyVersion: 2.3
6
+ TargetRubyVersion: 2.5
6
7
 
7
8
  Style/ClassAndModuleChildren:
8
9
  Enabled: false
9
- Metrics/LineLength:
10
+ Layout/LineLength:
10
11
  Max: 100
11
12
  Layout/EndOfLine:
12
13
  EnforcedStyle: lf
data/.simplecov CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2019-2020 Yegor Bugayenko
2
4
  #
3
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -18,21 +20,21 @@
18
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
21
  # SOFTWARE.
20
22
 
21
- if Gem.win_platform? then
23
+ if Gem.win_platform?
22
24
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
23
25
  SimpleCov::Formatter::HTMLFormatter
24
26
  ]
25
27
  SimpleCov.start do
26
- add_filter "/test/"
27
- add_filter "/features/"
28
+ add_filter '/test/'
29
+ add_filter '/features/'
28
30
  end
29
31
  else
30
32
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
31
33
  [SimpleCov::Formatter::HTMLFormatter]
32
34
  )
33
35
  SimpleCov.start do
34
- add_filter "/test/"
35
- add_filter "/features/"
36
+ add_filter '/test/'
37
+ add_filter '/features/'
36
38
  minimum_coverage 60
37
39
  end
38
40
  end
data/Gemfile CHANGED
@@ -21,5 +21,5 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  source 'https://rubygems.org'
24
- ruby '~>2.3'
24
+ ruby '~>2.5'
25
25
  gemspec
data/bin/sibit CHANGED
@@ -21,7 +21,7 @@
21
21
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  # SOFTWARE.
23
23
 
24
- STDOUT.sync = true
24
+ $stdout.sync = true
25
25
 
26
26
  require 'slop'
27
27
  require 'backtrace'
@@ -68,27 +68,28 @@ Options are:"
68
68
  default: %w[earn blockchain btc bitcoinchain blockchair cex]
69
69
  )
70
70
  end
71
- rescue Slop::Error => ex
72
- raise ex.message
71
+ rescue Slop::Error => e
72
+ raise e.message
73
73
  end
74
74
  raise 'Try --help' if opts.arguments.empty?
75
- log = Sibit::Log.new(opts[:verbose] ? STDOUT : nil)
75
+ log = Sibit::Log.new(opts[:verbose] ? $stdout : nil)
76
76
  http = opts[:proxy] ? Sibit::HttpProxy.new(opts[:proxy]) : Sibit::Http.new
77
77
  apis = opts[:api].map(&:downcase).map do |a|
78
78
  api = nil
79
- if a == 'blockchain'
79
+ case a
80
+ when 'blockchain'
80
81
  api = Sibit::Blockchain.new(http: http, log: log, dry: opts[:dry])
81
- elsif a == 'btc'
82
+ when 'btc'
82
83
  api = Sibit::Btc.new(http: http, log: log, dry: opts[:dry])
83
- elsif a == 'bitcoinchain'
84
+ when 'bitcoinchain'
84
85
  api = Sibit::Bitcoinchain.new(http: http, log: log, dry: opts[:dry])
85
- elsif a == 'blockchair'
86
+ when 'blockchair'
86
87
  api = Sibit::Blockchair.new(http: http, log: log, dry: opts[:dry])
87
- elsif a == 'cex'
88
+ when 'cex'
88
89
  api = Sibit::Cex.new(http: http, log: log, dry: opts[:dry])
89
- elsif a == 'fake'
90
+ when 'fake'
90
91
  api = Sibit::Fake.new
91
- elsif a == 'earn'
92
+ when 'earn'
92
93
  api = Sibit::Earn.new(http: http, log: log, dry: opts[:dry])
93
94
  else
94
95
  raise Sibit::Error, "Unknown API \"#{a}\""
@@ -105,7 +106,7 @@ Options are:"
105
106
  text = %i[S M L XL].map do |m|
106
107
  sat = fees[m] * 250
107
108
  usd = sat * sibit.price / 100_000_000
108
- "#{m}: #{sat}sat / $#{format('%.02f', usd)}"
109
+ "#{m}: #{sat}sat / $#{format('%<usd>.02f', usd: usd)}"
109
110
  end.join("\n")
110
111
  puts text
111
112
  when 'latest'
@@ -141,11 +142,11 @@ Options are:"
141
142
  else
142
143
  raise "Command #{opts.arguments[0]} is not supported"
143
144
  end
144
- rescue StandardError => ex
145
+ rescue StandardError => e
145
146
  if opts[:verbose]
146
- puts Backtrace.new(ex).to_s
147
+ puts Backtrace.new(e).to_s
147
148
  else
148
- puts "ERROR: #{ex.message}"
149
+ puts "ERROR: #{e.message}"
149
150
  end
150
151
  exit(255)
151
152
  end
@@ -48,7 +48,7 @@ class Sibit
48
48
  # The +api+ argument can be an object or an array of objects. If an array
49
49
  # is provided, we will make an attempt to try them one by one, until
50
50
  # one of them succeedes.
51
- def initialize(log: STDOUT, api: Sibit::Blockchain.new(log: Sibit::Log.new(log)))
51
+ def initialize(log: $stdout, api: Sibit::Blockchain.new(log: Sibit::Log.new(log)))
52
52
  @log = Sibit::Log.new(log)
53
53
  @api = api
54
54
  end
@@ -20,6 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
+ require 'backtrace'
23
24
  require_relative 'error'
24
25
  require_relative 'log'
25
26
 
@@ -103,14 +104,15 @@ class Sibit
103
104
  def best_of(method)
104
105
  return yield @list unless @list.is_a?(Array)
105
106
  results = []
107
+ errors = []
106
108
  @list.each do |api|
107
- begin
108
- results << yield(api)
109
- rescue Sibit::Error => e
110
- @log.info("The API #{api.class.name} failed at #{method}(): #{e.message}") if @verbose
111
- end
109
+ results << yield(api)
110
+ rescue Sibit::Error => e
111
+ errors << e
112
+ @log.info("The API #{api.class.name} failed at #{method}(): #{e.message}") if @verbose
112
113
  end
113
114
  if results.empty?
115
+ errors.each { |e| @log.info(Backtrace.new(e).to_s) }
114
116
  raise Sibit::Error, "No APIs out of #{@list.length} managed to succeed at #{method}(): \
115
117
  #{@list.map { |a| a.class.name }.join(', ')}"
116
118
  end
@@ -20,6 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
+ require 'backtrace'
23
24
  require_relative 'error'
24
25
  require_relative 'log'
25
26
 
@@ -102,6 +103,7 @@ class Sibit
102
103
 
103
104
  def first_of(method)
104
105
  return yield @list unless @list.is_a?(Array)
106
+ errors = []
105
107
  done = false
106
108
  result = nil
107
109
  @list.each do |api|
@@ -111,10 +113,12 @@ class Sibit
111
113
  done = true
112
114
  break
113
115
  rescue Sibit::Error => e
116
+ errors << e
114
117
  @log.info("The API #{api.class.name} failed at #{method}(): #{e.message}") if @verbose
115
118
  end
116
119
  end
117
120
  unless done
121
+ errors.each { |e| @log.info(Backtrace.new(e).to_s) }
118
122
  raise Sibit::Error, "No APIs out of #{@list.length} managed to succeed at #{method}(): \
119
123
  #{@list.map { |a| a.class.name }.join(', ')}"
120
124
  end
@@ -34,7 +34,7 @@ class Sibit
34
34
  # provide anything, the console will be used. The object you provide
35
35
  # has to respond to the method +info+ or +puts+ in order to receive logging
36
36
  # messages.
37
- def initialize(log = STDOUT)
37
+ def initialize(log = $stdout)
38
38
  @log = log
39
39
  end
40
40
 
@@ -26,5 +26,5 @@
26
26
  # License:: MIT
27
27
  class Sibit
28
28
  # Current version of the library.
29
- VERSION = '0.20.3'
29
+ VERSION = '0.20.4'
30
30
  end
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
31
31
  s.required_rubygems_version = Gem::Requirement.new('>= 0')
32
32
  end
33
33
  s.rubygems_version = '2.2'
34
- s.required_ruby_version = '>= 2.3'
34
+ s.required_ruby_version = '>= 2.5'
35
35
  s.name = 'sibit'
36
36
  s.version = Sibit::VERSION
37
37
  s.license = 'MIT'
@@ -49,20 +49,18 @@ and Ruby 2.3+.'
49
49
  s.rdoc_options = ['--charset=UTF-8']
50
50
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
51
51
  s.add_runtime_dependency 'backtrace', '~> 0.3'
52
- s.add_runtime_dependency 'bitcoin', '0.2.0'
53
52
  s.add_runtime_dependency 'bitcoin-ruby', '0.0.19'
54
53
  s.add_runtime_dependency 'json', '~> 2'
55
54
  s.add_runtime_dependency 'retriable_proxy', '1.0.2'
56
55
  s.add_runtime_dependency 'slop', '~> 4.6'
57
- s.add_development_dependency 'aruba', '~> 0.14.1'
58
- s.add_development_dependency 'codecov', '0.2.8'
59
- s.add_development_dependency 'cucumber', '~> 1.3.17'
60
- s.add_development_dependency 'debase', '0.2.2'
61
- s.add_development_dependency 'minitest', '5.5.0'
62
- s.add_development_dependency 'rake', '12.0.0'
63
- s.add_development_dependency 'rspec-rails', '3.1.0'
64
- s.add_development_dependency 'rubocop', '0.61.0'
65
- s.add_development_dependency 'rubocop-rspec', '1.31.0'
66
- s.add_development_dependency 'ruby-debug-ide', '0.6.1'
67
- s.add_development_dependency 'webmock', '3.7.6'
56
+ s.add_development_dependency 'aruba', '~> 1.0'
57
+ s.add_development_dependency 'codecov', '0.2.11'
58
+ s.add_development_dependency 'cucumber', '~> 5.1'
59
+ s.add_development_dependency 'debase', '~> 0.2'
60
+ s.add_development_dependency 'minitest', '5.14.2'
61
+ s.add_development_dependency 'rake', '13.0.1'
62
+ s.add_development_dependency 'rspec-rails', '4.0.1'
63
+ s.add_development_dependency 'rubocop', '0.91.0'
64
+ s.add_development_dependency 'rubocop-rspec', '1.43.2'
65
+ s.add_development_dependency 'webmock', '3.9.1'
68
66
  end
@@ -20,7 +20,7 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
- STDOUT.sync = true
23
+ $stdout.sync = true
24
24
 
25
25
  require 'simplecov'
26
26
  SimpleCov.start
@@ -107,7 +107,7 @@ class TestLive < Minitest::Test
107
107
  json = api.utxos(['12fCwqBN4XsHq4iu2Wbfgq5e8YhqEGP3ee'])
108
108
  assert_equal(3, json.length)
109
109
  assert(json.find { |t| t[:value] == 16_200_000 }, 'UTXO not found')
110
- assert(json.find { |t| t[:script].unpack('H*').first.start_with?('76a9141231e760') })
110
+ assert(json.find { |t| t[:script].unpack1('H*').start_with?('76a9141231e760') })
111
111
  end
112
112
  end
113
113
 
@@ -130,11 +130,9 @@ class TestLive < Minitest::Test
130
130
  require_relative '../lib/sibit/bitcoinchain'
131
131
  apis << Sibit::Bitcoinchain.new
132
132
  apis.each do |api|
133
- begin
134
- yield api
135
- rescue Sibit::Error => e
136
- puts Backtrace.new(e).to_s
137
- end
133
+ yield api
134
+ rescue Sibit::Error => e
135
+ puts Backtrace.new(e).to_s
138
136
  end
139
137
  end
140
138
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sibit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.3
4
+ version: 0.20.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-08 00:00:00.000000000 Z
11
+ date: 2020-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.3'
27
- - !ruby/object:Gem::Dependency
28
- name: bitcoin
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 0.2.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 0.2.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bitcoin-ruby
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,154 +86,140 @@ dependencies:
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: 0.14.1
89
+ version: '1.0'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
- version: 0.14.1
96
+ version: '1.0'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: codecov
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - '='
116
102
  - !ruby/object:Gem::Version
117
- version: 0.2.8
103
+ version: 0.2.11
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - '='
123
109
  - !ruby/object:Gem::Version
124
- version: 0.2.8
110
+ version: 0.2.11
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: cucumber
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - "~>"
130
116
  - !ruby/object:Gem::Version
131
- version: 1.3.17
117
+ version: '5.1'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
122
  - - "~>"
137
123
  - !ruby/object:Gem::Version
138
- version: 1.3.17
124
+ version: '5.1'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: debase
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
- - - '='
129
+ - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: 0.2.2
131
+ version: '0.2'
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
- - - '='
136
+ - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: 0.2.2
138
+ version: '0.2'
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: minitest
155
141
  requirement: !ruby/object:Gem::Requirement
156
142
  requirements:
157
143
  - - '='
158
144
  - !ruby/object:Gem::Version
159
- version: 5.5.0
145
+ version: 5.14.2
160
146
  type: :development
161
147
  prerelease: false
162
148
  version_requirements: !ruby/object:Gem::Requirement
163
149
  requirements:
164
150
  - - '='
165
151
  - !ruby/object:Gem::Version
166
- version: 5.5.0
152
+ version: 5.14.2
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: rake
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
157
  - - '='
172
158
  - !ruby/object:Gem::Version
173
- version: 12.0.0
159
+ version: 13.0.1
174
160
  type: :development
175
161
  prerelease: false
176
162
  version_requirements: !ruby/object:Gem::Requirement
177
163
  requirements:
178
164
  - - '='
179
165
  - !ruby/object:Gem::Version
180
- version: 12.0.0
166
+ version: 13.0.1
181
167
  - !ruby/object:Gem::Dependency
182
168
  name: rspec-rails
183
169
  requirement: !ruby/object:Gem::Requirement
184
170
  requirements:
185
171
  - - '='
186
172
  - !ruby/object:Gem::Version
187
- version: 3.1.0
173
+ version: 4.0.1
188
174
  type: :development
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
178
  - - '='
193
179
  - !ruby/object:Gem::Version
194
- version: 3.1.0
180
+ version: 4.0.1
195
181
  - !ruby/object:Gem::Dependency
196
182
  name: rubocop
197
183
  requirement: !ruby/object:Gem::Requirement
198
184
  requirements:
199
185
  - - '='
200
186
  - !ruby/object:Gem::Version
201
- version: 0.61.0
187
+ version: 0.91.0
202
188
  type: :development
203
189
  prerelease: false
204
190
  version_requirements: !ruby/object:Gem::Requirement
205
191
  requirements:
206
192
  - - '='
207
193
  - !ruby/object:Gem::Version
208
- version: 0.61.0
194
+ version: 0.91.0
209
195
  - !ruby/object:Gem::Dependency
210
196
  name: rubocop-rspec
211
197
  requirement: !ruby/object:Gem::Requirement
212
198
  requirements:
213
199
  - - '='
214
200
  - !ruby/object:Gem::Version
215
- version: 1.31.0
216
- type: :development
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - '='
221
- - !ruby/object:Gem::Version
222
- version: 1.31.0
223
- - !ruby/object:Gem::Dependency
224
- name: ruby-debug-ide
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - '='
228
- - !ruby/object:Gem::Version
229
- version: 0.6.1
201
+ version: 1.43.2
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
205
  requirements:
234
206
  - - '='
235
207
  - !ruby/object:Gem::Version
236
- version: 0.6.1
208
+ version: 1.43.2
237
209
  - !ruby/object:Gem::Dependency
238
210
  name: webmock
239
211
  requirement: !ruby/object:Gem::Requirement
240
212
  requirements:
241
213
  - - '='
242
214
  - !ruby/object:Gem::Version
243
- version: 3.7.6
215
+ version: 3.9.1
244
216
  type: :development
245
217
  prerelease: false
246
218
  version_requirements: !ruby/object:Gem::Requirement
247
219
  requirements:
248
220
  - - '='
249
221
  - !ruby/object:Gem::Version
250
- version: 3.7.6
222
+ version: 3.9.1
251
223
  description: |-
252
224
  This is a simple Bitcoin client, to use from command line
253
225
  or from your Ruby app. You don't need to run any Bitcoin software,
@@ -324,7 +296,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
324
296
  requirements:
325
297
  - - ">="
326
298
  - !ruby/object:Gem::Version
327
- version: '2.3'
299
+ version: '2.5'
328
300
  required_rubygems_version: !ruby/object:Gem::Requirement
329
301
  requirements:
330
302
  - - ">="