baza.rb 0.0.1 → 0.0.3

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: d4be56cc9f4d1ff997e1cfd2d933a61d12e6967218efd73020929ee5a799f94f
4
- data.tar.gz: 5e63ac9c9a4f1dcd418aca195edaa7f41567d9ce038bc94527e6937e02e01ba7
3
+ metadata.gz: 79bdf99ef89239ac525987bbde20700d7c2ce13d05198df581729b0bd73bec6b
4
+ data.tar.gz: 8acc9a7baef255599d65b3ef6092f35c7355b22ce6ea09cca490a0da0e2dd429
5
5
  SHA512:
6
- metadata.gz: 67c9cfaedc2d58204e98a5a743a12427688fc18942833d60ddc7b740a283540f34daf73afbc3a31735e46a6c03dd4aee6bf95d07481750f3ddb3c3f93fb3d3c2
7
- data.tar.gz: 6141cbec72e2f26f93848bd3316f3cee5c3b41172817a40b43b1acc636fcd3f28b1fa43bfea90bb2ec6671cea41fd552732f1d74fe13d8b31cfa69d97d601c29
6
+ metadata.gz: 8d03964151b2b9eb9f7362425a877321d31d4bbce17c0e500f7f151d95cb3bde298fef2edc0f870c68e5c4447c6c2b82793ebc0a2e44508bf5182fad35080103
7
+ data.tar.gz: e45fdea8eb1df4ac95cf8a43cca2e6899bd997dd6140fe5eb9c80315cdc11301b6dc5eeb57a3b9683a6c7f67538bc31048e3c3069acca389ec3ab70dbeb66351
@@ -31,7 +31,7 @@ jobs:
31
31
  name: test
32
32
  strategy:
33
33
  matrix:
34
- os: [ubuntu-24.04, macos-12, windows-2022]
34
+ os: [ubuntu-24.04, macos-12]
35
35
  ruby: [3.3]
36
36
  runs-on: ${{ matrix.os }}
37
37
  steps:
data/.rubocop.yml CHANGED
@@ -62,3 +62,5 @@ Metrics/ParameterLists:
62
62
  Enabled: false
63
63
  Layout/MultilineAssignmentLayout:
64
64
  Enabled: true
65
+ Naming/FileName:
66
+ Enabled: false
data/.rultor.yml CHANGED
@@ -31,8 +31,8 @@ release:
31
31
  [[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1
32
32
  bundle exec rake
33
33
  rm -rf *.gem
34
- sed -i "s/0\.0\.0/${tag}/g" lib/baza/version.rb
35
- git add lib/baza/version.rb
34
+ sed -i "s/0\.0\.0/${tag}/g" lib/baza-rb/version.rb
35
+ git add lib/baza-rb/version.rb
36
36
  git commit -m "version set to ${tag}"
37
37
  gem build baza.rb.gemspec
38
38
  chmod 0600 ../rubygems.yml
data/Gemfile CHANGED
@@ -35,5 +35,6 @@ gem 'rubocop-performance', '1.21.1', require: false
35
35
  gem 'rubocop-rspec', '3.0.4', require: false
36
36
  gem 'simplecov', '0.22.0', require: false
37
37
  gem 'simplecov-cobertura', '2.1.0', require: false
38
+ gem 'wait_for', '~>0', require: false
38
39
  gem 'webmock', '3.23.1', require: false
39
40
  gem 'yard', '0.9.36', require: false
data/Gemfile.lock CHANGED
@@ -10,37 +10,40 @@ PATH
10
10
  iri (> 0)
11
11
  loog (> 0)
12
12
  retries (~> 0)
13
+ tago (~> 0)
13
14
  typhoeus (~> 1.3)
14
15
 
15
16
  GEM
16
17
  remote: https://rubygems.org/
17
18
  specs:
18
- actionpack (7.1.3.4)
19
- actionview (= 7.1.3.4)
20
- activesupport (= 7.1.3.4)
19
+ actionpack (7.2.0)
20
+ actionview (= 7.2.0)
21
+ activesupport (= 7.2.0)
21
22
  nokogiri (>= 1.8.5)
22
23
  racc
23
- rack (>= 2.2.4)
24
+ rack (>= 2.2.4, < 3.2)
24
25
  rack-session (>= 1.0.1)
25
26
  rack-test (>= 0.6.3)
26
27
  rails-dom-testing (~> 2.2)
27
28
  rails-html-sanitizer (~> 1.6)
28
- actionview (7.1.3.4)
29
- activesupport (= 7.1.3.4)
29
+ useragent (~> 0.16)
30
+ actionview (7.2.0)
31
+ activesupport (= 7.2.0)
30
32
  builder (~> 3.1)
31
33
  erubi (~> 1.11)
32
34
  rails-dom-testing (~> 2.2)
33
35
  rails-html-sanitizer (~> 1.6)
34
- activesupport (7.1.3.4)
36
+ activesupport (7.2.0)
35
37
  base64
36
38
  bigdecimal
37
- concurrent-ruby (~> 1.0, >= 1.0.2)
39
+ concurrent-ruby (~> 1.0, >= 1.3.1)
38
40
  connection_pool (>= 2.2.5)
39
41
  drb
40
42
  i18n (>= 1.6, < 2)
43
+ logger (>= 1.4.2)
41
44
  minitest (>= 5.1)
42
- mutex_m
43
- tzinfo (~> 2.0)
45
+ securerandom (>= 0.3)
46
+ tzinfo (~> 2.0, >= 2.0.5)
44
47
  addressable (2.8.7)
45
48
  public_suffix (>= 2.0.2, < 7.0)
46
49
  ansi (1.5.0)
@@ -49,7 +52,7 @@ GEM
49
52
  base64 (0.2.0)
50
53
  bigdecimal (3.1.8)
51
54
  builder (3.3.0)
52
- concurrent-ruby (1.3.3)
55
+ concurrent-ruby (1.3.4)
53
56
  connection_pool (2.4.1)
54
57
  crack (1.0.0)
55
58
  bigdecimal
@@ -108,7 +111,6 @@ GEM
108
111
  minitest (>= 5.0)
109
112
  ruby-progressbar
110
113
  multipart-post (2.4.1)
111
- mutex_m (0.2.0)
112
114
  net-http (0.4.1)
113
115
  uri
114
116
  net-ping (2.0.8)
@@ -144,10 +146,10 @@ GEM
144
146
  rails-html-sanitizer (1.6.0)
145
147
  loofah (~> 2.21)
146
148
  nokogiri (~> 1.14)
147
- railties (7.1.3.4)
148
- actionpack (= 7.1.3.4)
149
- activesupport (= 7.1.3.4)
150
- irb
149
+ railties (7.2.0)
150
+ actionpack (= 7.2.0)
151
+ activesupport (= 7.2.0)
152
+ irb (~> 1.13)
151
153
  rackup (>= 1.0.0)
152
154
  rake (>= 12.2)
153
155
  thor (~> 1.0, >= 1.2.2)
@@ -199,6 +201,7 @@ GEM
199
201
  rubocop-rspec (3.0.4)
200
202
  rubocop (~> 1.61)
201
203
  ruby-progressbar (1.13.0)
204
+ securerandom (0.3.1)
202
205
  simplecov (0.22.0)
203
206
  docile (~> 1.1)
204
207
  simplecov-html (~> 0.11)
@@ -218,6 +221,8 @@ GEM
218
221
  concurrent-ruby (~> 1.0)
219
222
  unicode-display_width (2.5.0)
220
223
  uri (0.13.0)
224
+ useragent (0.16.10)
225
+ wait_for (0.1.1)
221
226
  webmock (3.23.1)
222
227
  addressable (>= 2.8.0)
223
228
  crack (>= 0.3.2)
@@ -248,6 +253,7 @@ DEPENDENCIES
248
253
  rubocop-rspec (= 3.0.4)
249
254
  simplecov (= 0.22.0)
250
255
  simplecov-cobertura (= 2.1.0)
256
+ wait_for (~> 0)
251
257
  webmock (= 3.23.1)
252
258
  yard (= 0.9.36)
253
259
 
data/baza.rb.gemspec CHANGED
@@ -21,7 +21,7 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  require 'English'
24
- require_relative 'lib/baza/version'
24
+ require_relative 'lib/baza-rb/version'
25
25
 
26
26
  Gem::Specification.new do |s|
27
27
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
@@ -31,7 +31,9 @@ Gem::Specification.new do |s|
31
31
  s.license = 'MIT'
32
32
  s.summary = 'Zerocracy API Ruby Client'
33
33
  s.description =
34
- 'It is a Ruby client for Zerocracy API'
34
+ 'It is a Ruby client for Zerocracy API, allowing you to check your jobs ' \
35
+ 'statuses, upload and download binaries, lock/unlock them, manage durables, ' \
36
+ 'and do everything else that is possible to do via the HTTP API.'
35
37
  s.authors = ['Yegor Bugayenko']
36
38
  s.email = 'yegor256@gmail.com'
37
39
  s.homepage = 'http://github.com/zerocracy/baza.rb'
@@ -46,6 +48,7 @@ Gem::Specification.new do |s|
46
48
  s.add_dependency 'iri', '>0'
47
49
  s.add_dependency 'loog', '>0'
48
50
  s.add_dependency 'retries', '~>0'
51
+ s.add_dependency 'tago', '~>0'
49
52
  s.add_dependency 'typhoeus', '~>1.3'
50
53
  s.metadata['rubygems_mfa_required'] = 'true'
51
54
  end
@@ -26,5 +26,5 @@
26
26
  # Copyright:: Copyright (c) 2024 Yegor Bugayenko
27
27
  # License:: MIT
28
28
  class Baza
29
- VERSION = '0.0.1'
29
+ VERSION = '0.0.3'
30
30
  end
@@ -25,7 +25,8 @@ require 'retries'
25
25
  require 'iri'
26
26
  require 'loog'
27
27
  require 'base64'
28
- require_relative 'baza/elapsed'
28
+ require 'tago'
29
+ require_relative 'baza-rb/version'
29
30
 
30
31
  # Interface to the API of zerocracy.com.
31
32
  #
@@ -36,9 +37,7 @@ require_relative 'baza/elapsed'
36
37
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
37
38
  # Copyright:: Copyright (c) 2024 Yegor Bugayenko
38
39
  # License:: MIT
39
- class Baza
40
- VERSION = '0.0.0'
41
-
40
+ class BazaRb
42
41
  def initialize(host, port, token, ssl: true, timeout: 30, retries: 3, loog: Loog::NULL, compression: true)
43
42
  @host = host
44
43
  @port = port
@@ -96,6 +95,7 @@ class Baza
96
95
  File.open(file, 'wb') do |f|
97
96
  request = Typhoeus::Request.new(
98
97
  home.append('pull').append("#{id}.fb").to_s,
98
+ method: :get,
99
99
  headers: headers.merge(
100
100
  'Accept' => 'application/octet-stream'
101
101
  ),
@@ -154,7 +154,7 @@ class Baza
154
154
  )
155
155
  end
156
156
  stdout = ret.body
157
- throw :"The stdout of the job ##{id} has #{stdout.split("\n")} lines"
157
+ throw :"The stdout of the job ##{id} has #{stdout.split("\n").count} lines"
158
158
  end
159
159
  stdout
160
160
  end
@@ -194,6 +194,7 @@ class Baza
194
194
  302
195
195
  )
196
196
  end
197
+ throw :"Job name '#{name}' locked at #{@host}"
197
198
  end
198
199
  end
199
200
 
@@ -211,6 +212,7 @@ class Baza
211
212
  302
212
213
  )
213
214
  end
215
+ throw :"Job name '#{name}' unlocked at #{@host}"
214
216
  end
215
217
  end
216
218
 
@@ -256,6 +258,121 @@ class Baza
256
258
  exists
257
259
  end
258
260
 
261
+ # Place a single durable.
262
+ # @param [String] jname The name of the job on the server
263
+ # @param [String] file The file name
264
+ def durable_place(jname, file)
265
+ raise "File '#{file}' is absent" unless File.exist?(file)
266
+ id = nil
267
+ elapsed(@loog) do
268
+ ret =
269
+ with_retries(max_tries: @retries) do
270
+ checked(
271
+ Typhoeus::Request.post(
272
+ home.append('durables').append('place').to_s,
273
+ body: {
274
+ 'jname' => jname,
275
+ 'file' => File.basename(file),
276
+ 'zip' => File.open(file, 'r')
277
+ },
278
+ headers:,
279
+ connecttimeout: @timeout,
280
+ timeout: @timeout
281
+ ),
282
+ 302
283
+ )
284
+ end
285
+ id = ret.headers['X-Zerocracy-DurableId'].to_i
286
+ throw :"Durable ##{id} placed for job \"#{jname}\" at #{@host}"
287
+ end
288
+ id
289
+ end
290
+
291
+ # Save a single durable from local file to server.
292
+ # @param [Integer] id The ID of the durable
293
+ # @param [String] file The file to upload
294
+ def durable_save(id, file)
295
+ raise "File '#{file}' is absent" unless File.exist?(file)
296
+ elapsed(@loog) do
297
+ with_retries(max_tries: @retries) do
298
+ checked(
299
+ Typhoeus::Request.put(
300
+ home.append('durables').append(id).to_s,
301
+ body: File.binread(file),
302
+ headers:,
303
+ connecttimeout: @timeout,
304
+ timeout: @timeout
305
+ )
306
+ )
307
+ end
308
+ throw :"Durable ##{id} saved #{File.size(file)} bytes to #{@host}"
309
+ end
310
+ end
311
+
312
+ # Load a single durable from server to local file.
313
+ # @param [Integer] id The ID of the durable
314
+ # @param [String] file The file to upload
315
+ def durable_load(id, file)
316
+ FileUtils.mkdir_p(File.dirname(file))
317
+ elapsed(@loog) do
318
+ File.open(file, 'wb') do |f|
319
+ request = Typhoeus::Request.new(
320
+ home.append('durables').append(id).to_s,
321
+ method: :get,
322
+ headers: headers.merge(
323
+ 'Accept' => 'application/octet-stream'
324
+ ),
325
+ connecttimeout: @timeout,
326
+ timeout: @timeout
327
+ )
328
+ request.on_body do |chunk|
329
+ f.write(chunk)
330
+ end
331
+ with_retries(max_tries: @retries) do
332
+ request.run
333
+ end
334
+ checked(request.response)
335
+ end
336
+ throw :"Durable ##{id} loaded #{File.size(file)} bytes from #{@host}"
337
+ end
338
+ end
339
+
340
+ # Lock a single durable.
341
+ # @param [Integer] id The ID of the durable
342
+ # @param [String] owner The owner of the lock
343
+ def durable_lock(id, owner)
344
+ elapsed(@loog) do
345
+ with_retries(max_tries: @retries) do
346
+ checked(
347
+ Typhoeus::Request.get(
348
+ home.append('durables').append(id).append('lock').add(owner:).to_s,
349
+ headers:
350
+ ),
351
+ 302
352
+ )
353
+ end
354
+ throw :"Durable ##{id} locked at #{@host}"
355
+ end
356
+ end
357
+
358
+ # Unlock a single durable.
359
+ # @param [Integer] id The ID of the durable
360
+ # @param [String] owner The owner of the lock
361
+ def durable_unlock(id, owner)
362
+ elapsed(@loog) do
363
+ with_retries(max_tries: @retries) do
364
+ checked(
365
+ Typhoeus::Request.get(
366
+ home.append('durables').append(id).append('unlock').add(owner:).to_s,
367
+ headers:
368
+ ),
369
+ 302
370
+ )
371
+ end
372
+ throw :"Durable ##{id} unlocked at #{@host}"
373
+ end
374
+ end
375
+
259
376
  private
260
377
 
261
378
  def headers
@@ -280,6 +397,17 @@ class Baza
280
397
  params.merge(body:, headers:)
281
398
  end
282
399
 
400
+ def elapsed(loog)
401
+ start = Time.now
402
+ begin
403
+ yield
404
+ rescue UncaughtThrowError => e
405
+ tag = e.tag
406
+ throw e unless tag.is_a?(Symbol)
407
+ loog.info("#{tag} in #{start.ago}")
408
+ end
409
+ end
410
+
283
411
  def gzip(data)
284
412
  ''.dup.tap do |result|
285
413
  io = StringIO.new(result)
@@ -20,39 +20,28 @@
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 'minitest/autorun'
24
- require 'webmock/minitest'
25
- require 'webrick'
23
+ require 'factbase'
26
24
  require 'loog'
27
- require 'socket'
28
- require 'stringio'
25
+ require 'minitest/autorun'
26
+ require 'net/ping'
29
27
  require 'random-port'
30
- require 'factbase'
31
28
  require 'securerandom'
32
- require 'net/ping'
33
- require_relative '../lib/baza'
29
+ require 'socket'
30
+ require 'stringio'
31
+ require 'wait_for'
32
+ require 'webmock/minitest'
33
+ require 'webrick'
34
+ require_relative '../lib/baza-rb'
34
35
 
35
36
  # Test.
36
37
  # Author:: Yegor Bugayenko (yegor256@gmail.com)
37
38
  # Copyright:: Copyright (c) 2024 Yegor Bugayenko
38
39
  # License:: MIT
39
- class TestBaza < Minitest::Test
40
+ class TestBazaRb < Minitest::Test
40
41
  TOKEN = '00000000-0000-0000-0000-000000000000'
41
42
  HOST = 'api.zerocracy.com'
42
43
  PORT = 443
43
- LIVE = Baza.new(HOST, PORT, TOKEN)
44
-
45
- def test_live_recent_check
46
- WebMock.enable_net_connect!
47
- skip unless we_are_online
48
- assert(LIVE.recent('zerocracy').positive?)
49
- end
50
-
51
- def test_live_name_exists_check
52
- WebMock.enable_net_connect!
53
- skip unless we_are_online
54
- assert(LIVE.name_exists?('zerocracy'))
55
- end
44
+ LIVE = BazaRb.new(HOST, PORT, TOKEN, loog: Loog::VERBOSE)
56
45
 
57
46
  def test_live_push
58
47
  WebMock.enable_net_connect!
@@ -60,7 +49,18 @@ class TestBaza < Minitest::Test
60
49
  fb = Factbase.new
61
50
  fb.insert.foo = 'test-' * 10_000
62
51
  fb.insert
63
- assert(LIVE.push(fake_name, fb.export, []).positive?)
52
+ n = fake_name
53
+ assert(LIVE.push(n, fb.export, []).positive?)
54
+ assert(LIVE.name_exists?(n))
55
+ assert(LIVE.recent(n).positive?)
56
+ id = LIVE.recent(n)
57
+ wait_for(60) { LIVE.finished?(id) }
58
+ assert(!LIVE.pull(id).nil?)
59
+ assert(!LIVE.stdout(id).nil?)
60
+ assert(!LIVE.exit_code(id).nil?)
61
+ owner = 'baza.rb testing'
62
+ assert(!LIVE.lock(n, owner).nil?)
63
+ assert(!LIVE.unlock(n, owner).nil?)
64
64
  end
65
65
 
66
66
  def test_live_push_no_compression
@@ -69,45 +69,35 @@ class TestBaza < Minitest::Test
69
69
  fb = Factbase.new
70
70
  fb.insert.foo = 'test-' * 10_000
71
71
  fb.insert
72
- baza = Baza.new(HOST, PORT, TOKEN, compression: false)
72
+ baza = BazaRb.new(HOST, PORT, TOKEN, compression: false)
73
73
  assert(baza.push(fake_name, fb.export, []).positive?)
74
74
  end
75
75
 
76
- def test_live_pull
77
- WebMock.enable_net_connect!
78
- skip unless we_are_online
79
- id = LIVE.recent('zerocracy')
80
- assert(!LIVE.pull(id).nil?)
81
- end
82
-
83
- def test_live_check_finished
84
- WebMock.enable_net_connect!
85
- skip unless we_are_online
86
- id = LIVE.recent('zerocracy')
87
- assert(!LIVE.finished?(id).nil?)
88
- end
89
-
90
- def test_live_read_stdout
91
- WebMock.enable_net_connect!
92
- skip unless we_are_online
93
- id = LIVE.recent('zerocracy')
94
- assert(!LIVE.stdout(id).nil?)
95
- end
96
-
97
- def test_live_read_exit_code
76
+ def test_live_durable_lock_unlock
98
77
  WebMock.enable_net_connect!
99
78
  skip unless we_are_online
100
- id = LIVE.recent('zerocracy')
101
- assert(!LIVE.exit_code(id).nil?)
79
+ Dir.mktmpdir do |dir|
80
+ file = File.join(dir, "#{fake_name}.bin")
81
+ File.binwrite(file, 'hello')
82
+ id = LIVE.durable_place(fake_name, file)
83
+ owner = fake_name
84
+ LIVE.durable_lock(id, owner)
85
+ LIVE.durable_load(id, file)
86
+ LIVE.durable_save(id, file)
87
+ LIVE.durable_unlock(id, owner)
88
+ end
102
89
  end
103
90
 
104
- def test_live_lock_unlock
105
- WebMock.enable_net_connect!
106
- skip unless we_are_online
107
- n = fake_name
108
- owner = 'judges teesting'
109
- assert(!LIVE.lock(n, owner).nil?)
110
- assert(!LIVE.unlock(n, owner).nil?)
91
+ def test_durable_place
92
+ WebMock.disable_net_connect!
93
+ stub_request(:post, 'https://example.org/durables/place').to_return(
94
+ status: 302, headers: { 'X-Zerocracy-DurableId' => '42' }
95
+ )
96
+ Dir.mktmpdir do |dir|
97
+ file = File.join(dir, 'test.bin')
98
+ File.binwrite(file, 'hello')
99
+ assert_equal(42, BazaRb.new('example.org', 443, '000').durable_place('simple', file))
100
+ end
111
101
  end
112
102
 
113
103
  def test_simple_push
@@ -117,7 +107,7 @@ class TestBaza < Minitest::Test
117
107
  )
118
108
  assert_equal(
119
109
  42,
120
- Baza.new('example.org', 443, '000').push('simple', 'hello, world!', [])
110
+ BazaRb.new('example.org', 443, '000').push('simple', 'hello, world!', [])
121
111
  )
122
112
  end
123
113
 
@@ -128,7 +118,7 @@ class TestBaza < Minitest::Test
128
118
  .to_return(status: 200, body: '42')
129
119
  assert_equal(
130
120
  42,
131
- Baza.new('example.org', 443, '000').recent('simple')
121
+ BazaRb.new('example.org', 443, '000').recent('simple')
132
122
  )
133
123
  end
134
124
 
@@ -138,7 +128,7 @@ class TestBaza < Minitest::Test
138
128
  status: 200, body: 'yes'
139
129
  )
140
130
  assert(
141
- Baza.new('example.org', 443, '000').name_exists?('simple')
131
+ BazaRb.new('example.org', 443, '000').name_exists?('simple')
142
132
  )
143
133
  end
144
134
 
@@ -148,7 +138,7 @@ class TestBaza < Minitest::Test
148
138
  status: 200, body: '0'
149
139
  )
150
140
  assert(
151
- Baza.new('example.org', 443, '000').exit_code(42).zero?
141
+ BazaRb.new('example.org', 443, '000').exit_code(42).zero?
152
142
  )
153
143
  end
154
144
 
@@ -158,7 +148,7 @@ class TestBaza < Minitest::Test
158
148
  status: 200, body: 'hello!'
159
149
  )
160
150
  assert(
161
- !Baza.new('example.org', 443, '000').stdout(42).empty?
151
+ !BazaRb.new('example.org', 443, '000').stdout(42).empty?
162
152
  )
163
153
  end
164
154
 
@@ -168,7 +158,7 @@ class TestBaza < Minitest::Test
168
158
  status: 200, body: 'hello, world!'
169
159
  )
170
160
  assert(
171
- Baza.new('example.org', 443, '000').pull(333).start_with?('hello')
161
+ BazaRb.new('example.org', 443, '000').pull(333).start_with?('hello')
172
162
  )
173
163
  end
174
164
 
@@ -242,7 +232,7 @@ class TestBaza < Minitest::Test
242
232
  socket.puts "HTTP/1.1 #{code} OK\r\nContent-Length: #{response.length}\r\n\r\n#{response}"
243
233
  socket.close
244
234
  end
245
- yield Baza.new(host, port, '0000', **opts)
235
+ yield BazaRb.new(host, port, '0000', **opts)
246
236
  t.join
247
237
  end
248
238
  req
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baza.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-09 00:00:00.000000000 Z
11
+ date: 2024-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: tago
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: typhoeus
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +150,9 @@ dependencies:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
152
  version: '1.3'
139
- description: It is a Ruby client for Zerocracy API
153
+ description: It is a Ruby client for Zerocracy API, allowing you to check your jobs
154
+ statuses, upload and download binaries, lock/unlock them, manage durables, and do
155
+ everything else that is possible to do via the HTTP API.
140
156
  email: yegor256@gmail.com
141
157
  executables: []
142
158
  extensions: []
@@ -166,12 +182,11 @@ files:
166
182
  - README.md
167
183
  - Rakefile
168
184
  - baza.rb.gemspec
169
- - lib/baza.rb
170
- - lib/baza/elapsed.rb
171
- - lib/baza/version.rb
185
+ - lib/baza-rb.rb
186
+ - lib/baza-rb/version.rb
172
187
  - renovate.json
173
188
  - test/test__helper.rb
174
- - test/test_baza.rb
189
+ - test/test_baza-rb.rb
175
190
  homepage: http://github.com/zerocracy/baza.rb
176
191
  licenses:
177
192
  - MIT
data/lib/baza/elapsed.rb DELETED
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Copyright (c) 2024 Zerocracy
4
- #
5
- # Permission is hereby granted, free of charge, to any person obtaining a copy
6
- # of this software and associated documentation files (the 'Software'), to deal
7
- # in the Software without restriction, including without limitation the rights
8
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- # copies of the Software, and to permit persons to whom the Software is
10
- # furnished to do so, subject to the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be included in all
13
- # copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- # SOFTWARE.
22
-
23
- require 'tago'
24
-
25
- def elapsed(loog)
26
- start = Time.now
27
- begin
28
- yield
29
- rescue UncaughtThrowError => e
30
- tag = e.tag
31
- throw e unless tag.is_a?(Symbol)
32
- loog.info("#{tag} in #{start.ago}")
33
- end
34
- end