sdr-client 2.13.1 → 2.13.2

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: 073d9149d7aade5f78842251778f8731ca9ef8e767ab0abe59f5ff360f3d8c2a
4
- data.tar.gz: 1085b1b409a72c1a7d0377198199f44244ea7f4db17e78449a1931ac0e1502af
3
+ metadata.gz: 30ae047ce917b1e8806379dd4aa57282c69af3eb1a756ffc1a2c01e67e8eef76
4
+ data.tar.gz: 475b3e52ee610abfd063f512fcdbbe9c2cc35a52ac6ab368a72e81925a132e19
5
5
  SHA512:
6
- metadata.gz: 84aff6cb5c387c48fded7fa363f486e7123f3c2e2d55396e0fe7c9e785fd1a268158d5cc65eb77cd34dfaea8d66654f1a2e727ee0d366f66ce53f50087054840
7
- data.tar.gz: aafac64bc2a0bd62c06085288858d19e1d9ea17c88fd5d8b58edc6172c5ebd907c091d577a7b778bf00c2cfff0ac155810bad7387eab3f8665c393cd75eb366e
6
+ metadata.gz: df78e5244f588d1fe88a96d564e77e2611cb2dc503c9b8300ec06cc1fbffdb79ec4332502e38b6aa87ee5b1f287ca4134f7d4c6c8c6e55061b30a60708ec406a
7
+ data.tar.gz: 171f539702caf45adefa8037f788e9dc8de530a11d35fd0a6c6b1bbbb9a7bb017bf3997e05d6c2e8097a07b15c5af1b073b93c70aa9001be69ea6138ef9d74a4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sdr-client (2.13.1)
4
+ sdr-client (2.13.2)
5
5
  activesupport
6
6
  cocina-models (~> 0.96.0)
7
7
  config
@@ -9,25 +9,25 @@ module SdrClient
9
9
  def self.write(body)
10
10
  token = JSON.parse(body).fetch('token')
11
11
  FileUtils.mkdir_p(credentials_path, mode: 0o700)
12
- File.atomic_write(credentials_file) { |file| file.write(token) }
13
- File.chmod(0o600, credentials_file)
12
+ ::File.atomic_write(credentials_file) { |file| file.write(token) }
13
+ ::File.chmod(0o600, credentials_file)
14
14
  end
15
15
 
16
16
  def self.read
17
17
  return unless ::File.exist?(credentials_file)
18
18
 
19
- creds = File.read(credentials_file, chomp: true)
19
+ creds = ::File.read(credentials_file, chomp: true)
20
20
  return if creds.nil?
21
21
 
22
22
  creds
23
23
  end
24
24
 
25
25
  def self.credentials_path
26
- @credentials_path ||= File.join(Dir.home, '.sdr')
26
+ @credentials_path ||= ::File.join(Dir.home, '.sdr')
27
27
  end
28
28
 
29
29
  def self.credentials_file
30
- File.join(credentials_path, 'credentials')
30
+ ::File.join(credentials_path, 'credentials')
31
31
  end
32
32
  end
33
33
  end
@@ -46,7 +46,7 @@ module SdrClient
46
46
  end
47
47
 
48
48
  def cocina_hash_from_file
49
- @cocina_hash_from_file ||= JSON.parse(File.read(options[:cocina_file]), symbolize_names: true)
49
+ @cocina_hash_from_file ||= JSON.parse(::File.read(options[:cocina_file]), symbolize_names: true)
50
50
  end
51
51
 
52
52
  def cocina_hash_from_pipe
@@ -65,7 +65,7 @@ module SdrClient
65
65
  end
66
66
 
67
67
  def update_cocina_from_file(cocina_object)
68
- if !File.file?(options[:cocina_file]) || !File.readable?(options[:cocina_file])
68
+ if !::File.file?(options[:cocina_file]) || !::File.readable?(options[:cocina_file])
69
69
  raise "File not found: #{options[:cocina_file]}"
70
70
  end
71
71
 
@@ -64,17 +64,26 @@ module SdrClient
64
64
  validate_druid!(druid)
65
65
  # Make sure client is configured
66
66
  client
67
- job_id = CLI::Update.run(druid, **options)
67
+ job_id = Update.run(druid, **options)
68
68
  if options[:skip_polling]
69
69
  say "job ID #{job_id} queued (not polling because `-s` flag was supplied)"
70
70
  return
71
71
  end
72
72
 
73
+ # the extra args to `say` prevent appending a newline
74
+ say('SDR is processing your request.', nil, false)
75
+
73
76
  job_status = client.job_status(job_id: job_id)
74
- if job_status.wait_until_complete
75
- say "success! (druid: #{job_status.druid})"
77
+ job_status.wait_until_complete { say('.', nil, false) }
78
+
79
+ if job_status.complete?
80
+ if job_status.errors
81
+ say_error " errored! #{job_status.errors}"
82
+ else
83
+ say " success! (druid: #{job_status.druid})"
84
+ end
76
85
  else
77
- say_error "errored! #{job_status.errors}"
86
+ say_error " job #{job_id} did not complete\n#{job_status.result.inspect}"
78
87
  end
79
88
  end
80
89
 
@@ -143,7 +152,7 @@ module SdrClient
143
152
  sleep 0.5
144
153
  token_string = ask('Paste token here:')
145
154
  expiry = JSON.parse(token_string)['exp']
146
- CLI::Credentials.write(token_string)
155
+ Credentials.write(token_string)
147
156
  say "You are now authenticated for #{options[:url]} until #{expiry}"
148
157
  token_string
149
158
  end
@@ -6,6 +6,8 @@ module SdrClient
6
6
  class RedesignedClient
7
7
  # Wraps operations waiting for results from jobs
8
8
  class JobStatus
9
+ attr_reader :result
10
+
9
11
  def initialize(job_id:)
10
12
  @job_id = job_id
11
13
  @result = {
@@ -35,11 +37,26 @@ module SdrClient
35
37
  # @param [Integer] timeout_in_secs (180) timeout after this many secs
36
38
  # @param [Float] backoff_factor (2.0) how quickly to backoff. This should be > 1.0 and probably ought to be <= 2.0
37
39
  # @return [Boolean] true if successful false if unsuccessful.
38
- def wait_until_complete(secs_between_requests: 3.0,
40
+ def wait_until_complete(secs_between_requests: 3.0, # rubocop:disable Metrics/MethodLength
39
41
  timeout_in_secs: 180,
40
42
  backoff_factor: 2.0,
41
43
  max_secs_between_requests: 60)
42
- poll_until_complete(secs_between_requests, timeout_in_secs, backoff_factor, max_secs_between_requests)
44
+ begin
45
+ Timeout.timeout(timeout_in_secs) do
46
+ loop do
47
+ break if complete?
48
+
49
+ yield if block_given?
50
+
51
+ sleep(secs_between_requests)
52
+ # Exponential backoff, limited to max_secs_between_requests
53
+ secs_between_requests = [secs_between_requests * backoff_factor, max_secs_between_requests].min
54
+ end
55
+ end
56
+ rescue Timeout::Error
57
+ @result[:output][:errors] = ["Not complete after #{timeout_in_secs} seconds"]
58
+ end
59
+
43
60
  errors.nil?
44
61
  end
45
62
 
@@ -54,21 +71,6 @@ module SdrClient
54
71
  def path
55
72
  "/v1/background_job_results/#{job_id}"
56
73
  end
57
-
58
- def poll_until_complete(secs_between_requests, timeout_in_secs, backoff_factor, max_secs_between_requests)
59
- interval = secs_between_requests
60
- Timeout.timeout(timeout_in_secs) do
61
- loop do
62
- break if complete?
63
-
64
- sleep(interval)
65
- # Exponential backoff, limited to max_secs_between_requests
66
- interval = [interval * backoff_factor, max_secs_between_requests].min
67
- end
68
- end
69
- rescue Timeout::Error
70
- @result[:output][:errors] = ["Not complete after #{timeout_in_secs} seconds"]
71
- end
72
74
  end
73
75
  end
74
76
  end
@@ -35,6 +35,7 @@ module SdrClient
35
35
  model: request_builder.to_cocina,
36
36
  basepath: basepath,
37
37
  files: files,
38
+ accession: accession,
38
39
  request_builder: request_builder,
39
40
  **options
40
41
  )
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SdrClient
4
- VERSION = '2.13.1'
4
+ VERSION = '2.13.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sdr-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.1
4
+ version: 2.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-04-24 00:00:00.000000000 Z
11
+ date: 2024-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport