sdr-client 0.36.0 → 0.37.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: 7652ddb5f3116fb2ecefabb265718c0bd2e69d536955a22ebb7139cc287a38a1
4
- data.tar.gz: cbb4118974499de9f6c7ad10df1433c4aee712b309ee1c8064cd14602cf08808
3
+ metadata.gz: '0317804f79b720e64c6f6625b248c33ce62c90b41f7100b80f5a692f2686ff01'
4
+ data.tar.gz: 80cfbe267682f2b272a45ae380bb1db9749fd626f4b40279f4ce7bae76a2ed9a
5
5
  SHA512:
6
- metadata.gz: d47cc4fbbf26c51df56ba79c4cf97ea3c1add9b8aa2c8f5e78a8bf51f639a15a7bbcbc912f058a2b43d29ced7981623c4f26aafc9b66b5837ae3c17796325f99
7
- data.tar.gz: 107a93bbaf7fde4915bcfb2939853946aff4c0d5fbc3bfede4aeea1971cab270969a3b6406df66b9a44dced0cee70e6627e619aefff3d0803242b7c033ea13f0
6
+ metadata.gz: 113498f64f0e405daa754b8e20ce126e8ed2c1ef2ce2c0cbe0c4cfb1a8343dd261529ec146228b560d7dc13af22a1837cf3b7377c1c62e8da17fbc9b0c493d63
7
+ data.tar.gz: d2fe355591c76be1c2242d6420eb08742bddee7c784b38419b6d99f1293e82024a17a2c66d0530a92a740805b3121a45dc76a6ca29524b807b76a6054f047d51
@@ -68,6 +68,7 @@ module SdrClient
68
68
  end
69
69
  end
70
70
  require 'json'
71
+ require 'sdr_client/deposit/create_resource'
71
72
  require 'sdr_client/deposit/single_file_grouping_strategy'
72
73
  require 'sdr_client/deposit/matching_file_grouping_strategy'
73
74
  require 'sdr_client/deposit/files/direct_upload_request'
@@ -79,7 +80,8 @@ require 'sdr_client/deposit/request'
79
80
  require 'sdr_client/deposit/metadata_builder'
80
81
  require 'sdr_client/deposit/model_process'
81
82
  require 'sdr_client/deposit/process'
83
+ require 'sdr_client/deposit/unexpected_response'
84
+ require 'sdr_client/deposit/update_resource'
82
85
  require 'sdr_client/deposit/update_dro_with_file_identifiers'
83
86
  require 'sdr_client/deposit/upload_files'
84
87
  require 'sdr_client/deposit/upload_files_metadata_builder'
85
- require 'sdr_client/deposit/upload_resource'
@@ -2,8 +2,8 @@
2
2
 
3
3
  module SdrClient
4
4
  module Deposit
5
- # Uploads a resource (metadata) to the server
6
- class UploadResource
5
+ # Creates a resource (metadata) in SDR
6
+ class CreateResource
7
7
  DRO_PATH = '/v1/resources'
8
8
 
9
9
  def self.run(accession:, metadata:, logger:, connection:)
@@ -11,7 +11,7 @@ module SdrClient
11
11
  end
12
12
 
13
13
  # @param [Boolean] accession should the accessionWF be started
14
- # @param [String] metadata
14
+ # @param [Cocina::Models::RequestDRO, Cocina::Models::RequestCollection] metadata
15
15
  # @param [Hash<Symbol,String>] the result of the metadata call
16
16
  def initialize(accession:, metadata:, logger:, connection:)
17
17
  @accession = accession
@@ -24,7 +24,7 @@ module SdrClient
24
24
  # @return [String] job id for the background job result
25
25
  def run
26
26
  response = metadata_request
27
- unexpected_response(response) unless response.status == 201
27
+ UnexpectedResponse.call(response) unless response.status == 201
28
28
 
29
29
  logger.info("Response from server: #{response.body}")
30
30
 
@@ -36,16 +36,10 @@ module SdrClient
36
36
  attr_reader :metadata, :logger, :connection
37
37
 
38
38
  def metadata_request
39
- logger.debug("Starting upload metadata: #{metadata}")
39
+ json = metadata.to_json
40
+ logger.debug("Starting upload metadata: #{json}")
40
41
 
41
- connection.post(path, metadata, 'Content-Type' => 'application/json')
42
- end
43
-
44
- def unexpected_response(response)
45
- raise "There was an error with your request: #{response.body}" if response.status == 400
46
- raise 'There was an error with your credentials. Perhaps they have expired?' if response.status == 401
47
-
48
- raise "unexpected response: #{response.status} #{response.body}"
42
+ connection.post(path, json, 'Content-Type' => 'application/json')
49
43
  end
50
44
 
51
45
  def accession?
@@ -29,8 +29,8 @@ module SdrClient
29
29
  logger: logger,
30
30
  connection: connection)
31
31
  new_request_dro = UpdateDroWithFileIdentifiers.update(request_dro: request_dro, upload_responses: upload_responses)
32
- UploadResource.run(accession: @accession,
33
- metadata: new_request_dro.to_json,
32
+ CreateResource.run(accession: @accession,
33
+ metadata: new_request_dro,
34
34
  logger: logger,
35
35
  connection: connection)
36
36
  end
@@ -39,8 +39,8 @@ module SdrClient
39
39
  logger: logger)
40
40
  request = metadata_builder.with_uploads(upload_responses)
41
41
  model = Cocina::Models.build_request(request.as_json.with_indifferent_access)
42
- UploadResource.run(accession: @accession,
43
- metadata: JSON.generate(model.to_h),
42
+ CreateResource.run(accession: @accession,
43
+ metadata: model,
44
44
  logger: logger,
45
45
  connection: connection)
46
46
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrClient
4
+ module Deposit
5
+ # Handles unexpected responses when manipulating resources
6
+ class UnexpectedResponse
7
+ # @param [Faraday::Response] response
8
+ def self.call(response)
9
+ raise "There was an error with your request: #{response.body}" if response.status == 400
10
+ raise 'There was an error with your credentials. Perhaps they have expired?' if response.status == 401
11
+
12
+ raise "unexpected response: #{response.status} #{response.body}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SdrClient
4
+ module Deposit
5
+ # Updates a resource (metadata) in SDR
6
+ class UpdateResource
7
+ DRO_PATH = '/v1/resources/%<id>s'
8
+
9
+ def self.run(metadata:, logger:, connection:)
10
+ new(metadata: metadata, logger: logger, connection: connection).run
11
+ end
12
+
13
+ # @param [Cocina::Models::DRO] metadata
14
+ # @param [Hash<Symbol,String>] the result of the metadata call
15
+ def initialize(metadata:, logger:, connection:)
16
+ @metadata = metadata
17
+ @logger = logger
18
+ @connection = connection
19
+ end
20
+
21
+ # @param [Hash<Symbol,String>] the result of the metadata call
22
+ # @return [String] job id for the background job result
23
+ def run
24
+ response = metadata_request
25
+ UnexpectedResponse.call(response) unless response.status == 202
26
+
27
+ logger.info("Response from server: #{response.body}")
28
+
29
+ JSON.parse(response.body)['jobId']
30
+ end
31
+
32
+ private
33
+
34
+ attr_reader :metadata, :logger, :connection
35
+
36
+ def metadata_request
37
+ json = metadata.to_json
38
+ logger.debug("Starting upload metadata: #{json}")
39
+
40
+ connection.put(path(metadata), json, 'Content-Type' => 'application/json')
41
+ end
42
+
43
+ def path(metadata)
44
+ format(DRO_PATH, id: metadata.externalIdentifier)
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SdrClient
4
- VERSION = '0.36.0'
4
+ VERSION = '0.37.0'
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: 0.36.0
4
+ version: 0.37.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-04 00:00:00.000000000 Z
11
+ date: 2020-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -193,6 +193,7 @@ files:
193
193
  - lib/sdr_client/connection.rb
194
194
  - lib/sdr_client/credentials.rb
195
195
  - lib/sdr_client/deposit.rb
196
+ - lib/sdr_client/deposit/create_resource.rb
196
197
  - lib/sdr_client/deposit/file.rb
197
198
  - lib/sdr_client/deposit/file_metadata_builder.rb
198
199
  - lib/sdr_client/deposit/file_metadata_builder_operations/md5.rb
@@ -207,10 +208,11 @@ files:
207
208
  - lib/sdr_client/deposit/process.rb
208
209
  - lib/sdr_client/deposit/request.rb
209
210
  - lib/sdr_client/deposit/single_file_grouping_strategy.rb
211
+ - lib/sdr_client/deposit/unexpected_response.rb
210
212
  - lib/sdr_client/deposit/update_dro_with_file_identifiers.rb
213
+ - lib/sdr_client/deposit/update_resource.rb
211
214
  - lib/sdr_client/deposit/upload_files.rb
212
215
  - lib/sdr_client/deposit/upload_files_metadata_builder.rb
213
- - lib/sdr_client/deposit/upload_resource.rb
214
216
  - lib/sdr_client/login.rb
215
217
  - lib/sdr_client/login_prompt.rb
216
218
  - lib/sdr_client/version.rb