baza.rb 0.5.1 → 0.7.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
  SHA256:
3
- metadata.gz: 44a77b9084f7de4be77127285ca1b33ab3966a7d984b50c3c84dfaa72e98a36c
4
- data.tar.gz: 8d8e3368ff7ee202b794c88195842183b92982e4d816ba3a83a688a870bd9cda
3
+ metadata.gz: f6ee64c99f7aa6a6254d2a98ffd0a49f33cb5c33992094afedf2d926905b7a24
4
+ data.tar.gz: 76722a8fdafbc741e314213ae3912ff8e8c6d7368cbde7edbe3ab89c87448916
5
5
  SHA512:
6
- metadata.gz: 6f7f2c3dc38e59b28eb9cbc57099544f4762119eb66b2af45c5e2b17205e67121a5a96629a71b38d53b07517face93dce74b73bf270fc4d38fa0a69a5a4e5d2a
7
- data.tar.gz: be736e44829b1384a724e31f026d8e1f7568de5867da240c0c27feec74ab1eb2a8148f3657035a4fcf0ee39376774637a44e60238a48255ca56b179d06675cf8
6
+ metadata.gz: 351ef08d92a9d637b51b163db95e26b8927abed703a51a1362e4fe51a10714c97afa7b16700bc348cfa4de168788929f5abb89c62e59a4ecf53ce2cd588b3cec
7
+ data.tar.gz: 6560d77ff5939235f2db005c6151e3cf83ea0d8b40f4c0b7e84c6dde97caaa25daad25beb4cd3dbb936e837601783454b9eefad8bc0a56320d4a4c44d6e1b555
data/Gemfile CHANGED
@@ -6,21 +6,21 @@
6
6
  source 'https://rubygems.org'
7
7
  gemspec
8
8
 
9
- gem 'base64', '>0', require: false
10
- gem 'factbase', '>0', require: false
9
+ gem 'base64', '~>0.3', require: false
10
+ gem 'factbase', '~>0.11', require: false
11
11
  gem 'minitest', '~>5.25', require: false
12
12
  gem 'minitest-reporters', '~>1.7', require: false
13
- gem 'os', '>0', require: false
14
- gem 'qbash', '>0', require: false
13
+ gem 'os', '~>1.1', require: false
14
+ gem 'qbash', '~>0.4', require: false
15
15
  gem 'rake', '~>13.2', require: false
16
- gem 'random-port', '>0', require: false
16
+ gem 'random-port', '~>0.7', require: false
17
17
  gem 'rubocop', '~>1.73', require: false
18
- gem 'rubocop-minitest', '>0', require: false
18
+ gem 'rubocop-minitest', '~>0.38', require: false
19
19
  gem 'rubocop-performance', '~>1.23', require: false
20
- gem 'rubocop-rake', '>0', require: false
20
+ gem 'rubocop-rake', '~>0.7', require: false
21
21
  gem 'simplecov', '~>0.22', require: false
22
22
  gem 'simplecov-cobertura', '~>2.1', require: false
23
- gem 'wait_for', '~>0', require: false
23
+ gem 'wait_for', '~>0.1', require: false
24
24
  gem 'webmock', '~>3.24', require: false
25
25
  gem 'webrick', '~>1.9', require: false
26
26
  gem 'yard', '~>0.9', require: false
data/Gemfile.lock CHANGED
@@ -2,17 +2,17 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  baza.rb (0.0.0)
5
- backtrace (> 0)
6
- elapsed (> 0)
7
- faraday (> 0)
8
- faraday-http-cache (> 0)
9
- faraday-multipart (> 0)
10
- faraday-retry (> 0)
11
- iri (> 0)
12
- loog (> 0)
13
- retries (~> 0)
14
- tago (~> 0)
15
- typhoeus (~> 1.3)
5
+ backtrace (~> 0.4)
6
+ elapsed (~> 0.0)
7
+ faraday (~> 2.13)
8
+ faraday-http-cache (~> 2.5)
9
+ faraday-multipart (~> 1.1)
10
+ faraday-retry (~> 2.3)
11
+ iri (~> 0.11)
12
+ loog (~> 0.6)
13
+ retries (~> 0.0)
14
+ tago (~> 0.0)
15
+ typhoeus (~> 1.4)
16
16
 
17
17
  GEM
18
18
  remote: https://rubygems.org/
@@ -21,9 +21,9 @@ GEM
21
21
  public_suffix (>= 2.0.2, < 7.0)
22
22
  ansi (1.5.0)
23
23
  ast (2.4.3)
24
- backtrace (0.4.0)
24
+ backtrace (0.4.1)
25
25
  base64 (0.3.0)
26
- bigdecimal (3.2.1)
26
+ bigdecimal (3.2.2)
27
27
  builder (3.3.0)
28
28
  crack (1.0.0)
29
29
  bigdecimal
@@ -35,7 +35,7 @@ GEM
35
35
  tago (> 0)
36
36
  ethon (0.16.0)
37
37
  ffi (>= 1.15.0)
38
- factbase (0.10.2)
38
+ factbase (0.11.0)
39
39
  backtrace (~> 0.4)
40
40
  decoor (~> 0.0)
41
41
  json (~> 2.7)
@@ -107,7 +107,7 @@ GEM
107
107
  regexp_parser (2.10.0)
108
108
  retries (0.0.5)
109
109
  rexml (3.4.1)
110
- rubocop (1.75.8)
110
+ rubocop (1.76.1)
111
111
  json (~> 2.3)
112
112
  language_server-protocol (~> 3.17.0.2)
113
113
  lint_roller (~> 1.1.0)
@@ -115,10 +115,10 @@ GEM
115
115
  parser (>= 3.3.0.2)
116
116
  rainbow (>= 2.2.2, < 4.0)
117
117
  regexp_parser (>= 2.9.3, < 3.0)
118
- rubocop-ast (>= 1.44.0, < 2.0)
118
+ rubocop-ast (>= 1.45.0, < 2.0)
119
119
  ruby-progressbar (~> 1.7)
120
120
  unicode-display_width (>= 2.4.0, < 4.0)
121
- rubocop-ast (1.44.1)
121
+ rubocop-ast (1.45.1)
122
122
  parser (>= 3.3.7.2)
123
123
  prism (~> 1.4)
124
124
  rubocop-minitest (0.38.1)
@@ -168,22 +168,22 @@ PLATFORMS
168
168
  x86_64-linux
169
169
 
170
170
  DEPENDENCIES
171
- base64 (> 0)
171
+ base64 (~> 0.3)
172
172
  baza.rb!
173
- factbase (> 0)
173
+ factbase (~> 0.11)
174
174
  minitest (~> 5.25)
175
175
  minitest-reporters (~> 1.7)
176
- os (> 0)
177
- qbash (> 0)
176
+ os (~> 1.1)
177
+ qbash (~> 0.4)
178
178
  rake (~> 13.2)
179
- random-port (> 0)
179
+ random-port (~> 0.7)
180
180
  rubocop (~> 1.73)
181
- rubocop-minitest (> 0)
181
+ rubocop-minitest (~> 0.38)
182
182
  rubocop-performance (~> 1.23)
183
- rubocop-rake (> 0)
183
+ rubocop-rake (~> 0.7)
184
184
  simplecov (~> 0.22)
185
185
  simplecov-cobertura (~> 2.1)
186
- wait_for (~> 0)
186
+ wait_for (~> 0.1)
187
187
  webmock (~> 3.24)
188
188
  webrick (~> 1.9)
189
189
  yard (~> 0.9)
data/baza.rb.gemspec CHANGED
@@ -23,16 +23,16 @@ Gem::Specification.new do |s|
23
23
  s.files = `git ls-files`.split($RS)
24
24
  s.rdoc_options = ['--charset=UTF-8']
25
25
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
26
- s.add_dependency 'backtrace', '>0'
27
- s.add_dependency 'elapsed', '>0'
28
- s.add_dependency 'faraday', '>0'
29
- s.add_dependency 'faraday-http-cache', '>0'
30
- s.add_dependency 'faraday-multipart', '>0'
31
- s.add_dependency 'faraday-retry', '>0'
32
- s.add_dependency 'iri', '>0'
33
- s.add_dependency 'loog', '>0'
34
- s.add_dependency 'retries', '~>0'
35
- s.add_dependency 'tago', '~>0'
36
- s.add_dependency 'typhoeus', '~>1.3'
26
+ s.add_dependency 'backtrace', '~>0.4'
27
+ s.add_dependency 'elapsed', '~>0.0'
28
+ s.add_dependency 'faraday', '~>2.13'
29
+ s.add_dependency 'faraday-http-cache', '~>2.5'
30
+ s.add_dependency 'faraday-multipart', '~>1.1'
31
+ s.add_dependency 'faraday-retry', '~>2.3'
32
+ s.add_dependency 'iri', '~>0.11'
33
+ s.add_dependency 'loog', '~>0.6'
34
+ s.add_dependency 'retries', '~>0.0'
35
+ s.add_dependency 'tago', '~>0.0'
36
+ s.add_dependency 'typhoeus', '~>1.4'
37
37
  s.metadata['rubygems_mfa_required'] = 'true'
38
38
  end
data/lib/baza-rb/fake.rb CHANGED
@@ -123,6 +123,17 @@ class BazaRb::Fake
123
123
  true
124
124
  end
125
125
 
126
+ # Find a single durable.
127
+ #
128
+ # @param [String] jname The name of the job on the server
129
+ # @param [String] file The path to the file to upload
130
+ # @return [Integer] Always returns 42 as the fake durable ID
131
+ def durable_find(jname, file)
132
+ assert_name(jname)
133
+ assert_file(file)
134
+ 42
135
+ end
136
+
126
137
  # Place a single durable file on the server.
127
138
  #
128
139
  # @param [String] jname The name of the job on the server
@@ -213,12 +224,14 @@ class BazaRb::Fake
213
224
  # @param [String] owner Identifier of who is taking the job
214
225
  # @param [String] zip The local file path where the job's ZIP will be saved
215
226
  # @return [Boolean] Always returns TRUE and creates an empty file
227
+ # rubocop:disable Naming/PredicateMethod
216
228
  def pop(owner, zip)
217
229
  assert_owner(owner)
218
230
  FileUtils.mkdir_p(File.dirname(zip))
219
231
  FileUtils.touch(zip)
220
232
  true
221
233
  end
234
+ # rubocop:enable Naming/PredicateMethod
222
235
 
223
236
  # Submit a ZIP archive to finish a previously popped job.
224
237
  #
@@ -13,5 +13,5 @@
13
13
  # Copyright:: Copyright (c) 2024-2025 Yegor Bugayenko
14
14
  # License:: MIT
15
15
  class BazaRb
16
- VERSION = '0.5.1'
16
+ VERSION = '0.7.0'
17
17
  end
data/lib/baza-rb.rb CHANGED
@@ -158,25 +158,7 @@ class BazaRb
158
158
  data = ''
159
159
  elapsed(@loog) do
160
160
  Tempfile.open do |file|
161
- File.open(file, 'wb') do |f|
162
- request = Typhoeus::Request.new(
163
- home.append('pull').append("#{id}.fb").to_s,
164
- method: :get,
165
- headers: headers.merge(
166
- 'Accept' => 'application/zip, application/factbase'
167
- ),
168
- accept_encoding: 'gzip',
169
- connecttimeout: @timeout,
170
- timeout: @timeout
171
- )
172
- request.on_body do |chunk|
173
- f.write(chunk)
174
- end
175
- retry_it do
176
- request.run
177
- end
178
- checked(request.response)
179
- end
161
+ download(home.append('pull').append("#{id}.fb").to_s, file.path)
180
162
  data = File.binread(file)
181
163
  throw :"Pulled #{data.bytesize} bytes of job ##{id} factbase at #{@host}"
182
164
  end
@@ -446,26 +428,8 @@ class BazaRb
446
428
  raise 'The ID of the durable is nil' if id.nil?
447
429
  raise 'The ID of the durable must be a positive integer' unless id.positive?
448
430
  raise 'The "file" of the durable is nil' if file.nil?
449
- FileUtils.mkdir_p(File.dirname(file))
450
431
  elapsed(@loog) do
451
- File.open(file, 'wb') do |f|
452
- request = Typhoeus::Request.new(
453
- home.append('durables').append(id).to_s,
454
- method: :get,
455
- headers: headers.merge(
456
- 'Accept' => 'application/octet-stream'
457
- ),
458
- connecttimeout: @timeout,
459
- timeout: @timeout
460
- )
461
- request.on_body do |chunk|
462
- f.write(chunk)
463
- end
464
- retry_it do
465
- request.run
466
- end
467
- checked(request.response)
468
- end
432
+ download(home.append('durables').append(id).to_s, file)
469
433
  throw :"Durable ##{id} loaded #{File.size(file)} bytes from #{@host}"
470
434
  end
471
435
  end
@@ -516,6 +480,38 @@ class BazaRb
516
480
  end
517
481
  end
518
482
 
483
+ # Find a durable by job name and file name.
484
+ #
485
+ # @param [String] jname The name of the job
486
+ # @param [String] file The file name
487
+ # @return [Integer, nil] The ID of the durable if found, nil if not found
488
+ def durable_find(jname, file)
489
+ raise 'The "jname" is nil' if jname.nil?
490
+ raise 'The "jname" may not be empty' if jname.empty?
491
+ raise 'The "file" is nil' if file.nil?
492
+ raise 'The "file" may not be empty' if file.empty?
493
+ id = nil
494
+ elapsed(@loog) do
495
+ ret =
496
+ retry_it do
497
+ checked(
498
+ Typhoeus::Request.get(
499
+ home.append('durables').append('find').add(jname:, file:).to_s,
500
+ headers:
501
+ ),
502
+ [200, 404]
503
+ )
504
+ end
505
+ if ret.code == 200
506
+ id = ret.body.to_i
507
+ throw :"Found durable ##{id} for job \"#{jname}\" file \"#{file}\" at #{@host}"
508
+ else
509
+ throw :"Durable not found for job \"#{jname}\" file \"#{file}\" at #{@host}"
510
+ end
511
+ end
512
+ id
513
+ end
514
+
519
515
  # Transfer funds to another user.
520
516
  #
521
517
  # @param [String] recipient GitHub username of the recipient (e.g. "yegor256")
@@ -607,55 +603,28 @@ class BazaRb
607
603
  # @return [Boolean] TRUE if a job was successfully popped, FALSE if queue is empty
608
604
  # @raise [ServerFailure] If the pop operation fails
609
605
  def pop(owner, zip)
610
- raise 'The "zip" of the job is nil' if zip.nil?
611
606
  success = false
612
- FileUtils.rm_f(zip)
613
- job = nil
614
607
  elapsed(@loog) do
615
- File.open(zip, 'wb+') do |f|
616
- loop do
617
- uri = home.append('pop').add(owner:)
618
- uri = uri.add(job:) if job
619
- request = Typhoeus::Request.new(
620
- uri.to_s,
621
- method: :get,
622
- headers: headers.merge(
623
- 'Accept' => 'application/octet-stream',
624
- 'Range' => "bytes=#{f.size}-"
608
+ uri = home.append('pop').add(owner:)
609
+ ret =
610
+ retry_it do
611
+ checked(
612
+ Typhoeus::Request.get(
613
+ uri.to_s,
614
+ headers:
625
615
  ),
626
- connecttimeout: @timeout,
627
- timeout: @timeout
616
+ [200, 204, 206]
628
617
  )
629
- request.on_body do |chunk|
630
- f.write(chunk)
631
- end
632
- retry_it do
633
- request.run
634
- end
635
- ret = request.response
636
- checked(ret, [200, 204, 206])
637
- success = ret.code != 204
638
- break unless ret.code == 206
639
- job = ret.headers['X-Zerocracy-JobId']
640
- raise 'Job ID is not returned in X-Zerocracy-JobId' if job.nil?
641
- raise "Job ID returned in X-Zerocracy-JobId is not valid (#{job.inspect})" unless job.match?(/^[0-9]+$/)
642
- _, v = ret.headers['Content-Range'].split
643
- range, total = v.split('/')
644
- raise "Total size is not valid (#{total.inspect})" unless total.match?(/^\*|[0-9]+$/)
645
- b, e = range.split('-')
646
- raise "Range is not valid (#{range.inspect})" unless e.match?(/^[0-9]+$/)
647
- len = ret.headers['Content-Length'].to_i
648
- unless len.zero?
649
- raise "Range size (#{range.inspect}) is not equal to Content-Length" unless len - 1 == e.to_i - b.to_i
650
- raise "Range end (#{range.inspect}) is not equal to #{f.size}" if e.to_i != f.size - 1
651
- end
652
- break if e.to_i == total.to_i - 1
653
618
  end
654
- end
655
- unless success
619
+ if ret.code == 204
656
620
  FileUtils.rm_f(zip)
657
- throw :"Nothing to pop at #{@host}"
621
+ throw :"Nothing to pop at #{uri}"
658
622
  end
623
+ job = ret.headers['X-Zerocracy-JobId']
624
+ raise 'Job ID is not returned in X-Zerocracy-JobId' if job.nil?
625
+ raise "Job ID returned in X-Zerocracy-JobId is not valid (#{job.inspect})" unless job.match?(/^[0-9]+$/)
626
+ download(uri.add(job:), zip)
627
+ success = true
659
628
  throw :"Popped #{File.size(zip)} bytes in ZIP archive at #{@host}"
660
629
  end
661
630
  success
@@ -851,4 +820,49 @@ class BazaRb
851
820
  @loog.error(msg)
852
821
  raise ServerFailure, msg
853
822
  end
823
+
824
+ # Download file via GET, in ranges.
825
+ # @param [String] uri The URI
826
+ # @param [String] file The path to save to
827
+ def download(uri, file)
828
+ raise 'The "file" is nil' if file.nil?
829
+ FileUtils.mkdir_p(File.dirname(file))
830
+ elapsed(@loog) do
831
+ File.open(file, 'wb+') do |f|
832
+ loop do
833
+ request = Typhoeus::Request.new(
834
+ uri.to_s,
835
+ method: :get,
836
+ headers: headers.merge(
837
+ 'Accept' => 'application/octet-stream',
838
+ 'Range' => "bytes=#{f.size}-"
839
+ ),
840
+ connecttimeout: @timeout,
841
+ timeout: @timeout
842
+ )
843
+ request.on_body do |chunk|
844
+ f.write(chunk)
845
+ end
846
+ retry_it do
847
+ request.run
848
+ end
849
+ ret = request.response
850
+ checked(ret, [200, 206])
851
+ break if ret.code == 200
852
+ _, v = ret.headers['Content-Range'].split
853
+ range, total = v.split('/')
854
+ raise "Total size is not valid (#{total.inspect})" unless total.match?(/^\*|[0-9]+$/)
855
+ b, e = range.split('-')
856
+ raise "Range is not valid (#{range.inspect})" unless e.match?(/^[0-9]+$/)
857
+ len = ret.headers['Content-Length'].to_i
858
+ unless len.zero?
859
+ raise "Range size (#{range.inspect}) is not equal to Content-Length" unless len - 1 == e.to_i - b.to_i
860
+ raise "Range end (#{range.inspect}) is not equal to #{f.size}" if e.to_i != f.size - 1
861
+ end
862
+ break if e.to_i == total.to_i - 1
863
+ end
864
+ end
865
+ throw :"Downloaded #{File.size(file)} bytes from #{uri}"
866
+ end
867
+ end
854
868
  end
data/test/test_baza-rb.rb CHANGED
@@ -22,7 +22,7 @@ require_relative '../lib/baza-rb'
22
22
  # License:: MIT
23
23
  class TestBazaRb < Minitest::Test
24
24
  # The token to use for testing, in Zerocracy.com:
25
- TOKEN = '00000000-0000-0000-0000-000000000000'
25
+ TOKEN = 'ZRCY-00000000-0000-0000-0000-000000000000'
26
26
 
27
27
  # The host of the production platform:
28
28
  HOST = 'api.zerocracy.com'
@@ -95,7 +95,10 @@ class TestBazaRb < Minitest::Test
95
95
  Dir.mktmpdir do |dir|
96
96
  file = File.join(dir, "#{fake_name}.bin")
97
97
  File.binwrite(file, 'hello')
98
- id = LIVE.durable_place(fake_name, file)
98
+ jname = fake_name
99
+ refute(LIVE.durable_find(jname, File.basename(file)))
100
+ id = LIVE.durable_place(jname, file)
101
+ assert_equal(id, LIVE.durable_find(jname, File.basename(file)))
99
102
  owner = fake_name
100
103
  LIVE.durable_lock(id, owner)
101
104
  LIVE.durable_load(id, file)
@@ -519,6 +522,24 @@ class TestBazaRb < Minitest::Test
519
522
  assert_equal('new result', result)
520
523
  end
521
524
 
525
+ def test_durable_find_found
526
+ WebMock.disable_net_connect!
527
+ stub_request(:get, 'https://example.org:443/durables/find?jname=test-job&file=test.txt')
528
+ .with(headers: { 'X-Zerocracy-Token' => '000' })
529
+ .to_return(status: 200, body: '42')
530
+ id = fake_baza.durable_find('test-job', 'test.txt')
531
+ assert_equal(42, id)
532
+ end
533
+
534
+ def test_durable_find_not_found
535
+ WebMock.disable_net_connect!
536
+ stub_request(:get, 'https://example.org:443/durables/find?jname=test-job&file=test.txt')
537
+ .with(headers: { 'X-Zerocracy-Token' => '000' })
538
+ .to_return(status: 404)
539
+ id = fake_baza.durable_find('test-job', 'test.txt')
540
+ assert_nil(id)
541
+ end
542
+
522
543
  def test_checked_with_500_error
523
544
  WebMock.disable_net_connect!
524
545
  stub_request(:get, 'https://example.org:443/test')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baza.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -13,156 +13,156 @@ dependencies:
13
13
  name: backtrace
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">"
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0'
18
+ version: '0.4'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - ">"
23
+ - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0'
25
+ version: '0.4'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: elapsed
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - ">"
30
+ - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: '0.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">"
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
39
+ version: '0.0'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: faraday
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">"
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0'
46
+ version: '2.13'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">"
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: '2.13'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: faraday-http-cache
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ">"
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0'
60
+ version: '2.5'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">"
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: '2.5'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: faraday-multipart
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">"
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: '1.1'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">"
79
+ - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0'
81
+ version: '1.1'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: faraday-retry
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">"
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0'
88
+ version: '2.3'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">"
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
95
+ version: '2.3'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: iri
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - ">"
100
+ - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0'
102
+ version: '0.11'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">"
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '0.11'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: loog
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">"
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: '0.6'
117
117
  type: :runtime
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">"
121
+ - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0'
123
+ version: '0.6'
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: retries
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: '0.0'
131
131
  type: :runtime
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '0'
137
+ version: '0.0'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: tago
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '0'
144
+ version: '0.0'
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '0'
151
+ version: '0.0'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: typhoeus
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '1.3'
158
+ version: '1.4'
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '1.3'
165
+ version: '1.4'
166
166
  description: It is a Ruby client for Zerocracy API, allowing you to check your job
167
167
  statuses, upload and download binaries, lock/unlock them, manage durables, and do
168
168
  everything else that is possible to do via the HTTP API.