dor-services-client 9.1.0 → 10.1.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 +4 -4
- data/.rubocop.yml +1 -1
- data/README.md +5 -3
- data/dor-services-client.gemspec +1 -1
- data/lib/dor/services/client/accession.rb +4 -4
- data/lib/dor/services/client/mutate.rb +5 -1
- data/lib/dor/services/client/object_version.rb +18 -26
- data/lib/dor/services/client/objects.rb +2 -2
- data/lib/dor/services/client/version.rb +1 -1
- data/lib/dor/services/client/versioned_service.rb +3 -1
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d5e8a1919cb3cf3e1ad0ae59f1d29a0a30d181d330146ddb0cc8a580f5e37a8
|
4
|
+
data.tar.gz: abc969bfa3b1aae80c666d5ab244ca8ca3ebf2bbfe73fde20dabeffa8dfdefea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 969b9fde995a8598ef1fa33c6aefb18e0fae6aa42fb38ff30ed1c8e6e939622e45921d5c26dbcf19668eb52930a81fd18e44e005345ee51a98da80dcde5f2fe9
|
7
|
+
data.tar.gz: edfe4f38b84cde8a1da06b527d16d1b8a46ccba945db6944809bc1d9748f56d328e449d3921668018e1bc966812a123a70a3508858331e9ac6892992e02f0391
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -123,9 +123,11 @@ object_client.notify_goobi
|
|
123
123
|
# Manage versions
|
124
124
|
object_client.version.inventory
|
125
125
|
object_client.version.current
|
126
|
-
object_client.version.openable?
|
127
|
-
|
128
|
-
object_client.version.
|
126
|
+
object_client.version.openable?
|
127
|
+
# see dor-services-app openapi.yml for optional params
|
128
|
+
object_client.version.open(description: 'Changed title', significance: 'minor')
|
129
|
+
# see dor-services-app openapi.yml for optional params
|
130
|
+
object_client.version.close
|
129
131
|
|
130
132
|
# Get the Dublin Core XML representation
|
131
133
|
object_client.metadata.dublin_core
|
data/dor-services-client.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.required_ruby_version = '>= 2.7', '< 4' # dor-services-app needs 2.7 due to fedora3
|
26
26
|
|
27
27
|
spec.add_dependency 'activesupport', '>= 4.2', '< 8'
|
28
|
-
spec.add_dependency 'cocina-models', '~> 0.
|
28
|
+
spec.add_dependency 'cocina-models', '~> 0.76.0' # leave pinned to patch level until cocina-models hits 1.0
|
29
29
|
spec.add_dependency 'deprecation', '>= 0'
|
30
30
|
spec.add_dependency 'faraday', '~> 2.0'
|
31
31
|
spec.add_dependency 'faraday-retry'
|
@@ -15,10 +15,10 @@ module Dor
|
|
15
15
|
|
16
16
|
# Start accession on an object (start specified workflow, assemblyWF by default, and version if needed)
|
17
17
|
# @param params [Hash<Symbol,String>] optional parameter hash
|
18
|
-
# @option params [String] :significance set significance (major/minor/patch) of version change
|
19
|
-
# @option params [String] :description set description of version change
|
20
|
-
# @option params [String] :opening_user_name add opening username to the events datastream
|
21
|
-
# @option params [String] :workflow the workflow to start
|
18
|
+
# @option params [String] :significance set significance (major/minor/patch) of version change - required
|
19
|
+
# @option params [String] :description set description of version change - required
|
20
|
+
# @option params [String] :opening_user_name add opening username to the events datastream - optional
|
21
|
+
# @option params [String] :workflow the workflow to start - defaults to 'assemblyWF'
|
22
22
|
# @return [Boolean] true on success
|
23
23
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
24
24
|
# @raise [UnexpectedResponse] when the response is not successful.
|
@@ -33,7 +33,10 @@ module Dor
|
|
33
33
|
# @raise [BadRequestError] when ETag not provided.
|
34
34
|
# @return [Cocina::Models::DROWithMetadata,Cocina::Models::CollectionWithMetadata,Cocina::Models::AdminPolicyWithMetadata] the returned model
|
35
35
|
# rubocop:disable Metrics/AbcSize
|
36
|
+
# rubocop:disable Metrics/MethodLength
|
36
37
|
def update(params:, skip_lock: false)
|
38
|
+
raise ArgumentError, 'Cocina object not provided.' unless params.respond_to?(:externalIdentifier)
|
39
|
+
|
37
40
|
# Raised if Cocina::Models::*WithMetadata not provided.
|
38
41
|
raise ArgumentError, 'ETag not provided.' unless skip_lock || params.respond_to?(:lock)
|
39
42
|
|
@@ -42,7 +45,7 @@ module Dor
|
|
42
45
|
req.headers['Content-Type'] = 'application/json'
|
43
46
|
# asking the service to return JSON (else it'll be plain text)
|
44
47
|
req.headers['Accept'] = 'application/json'
|
45
|
-
req.headers['If-Match'] = params
|
48
|
+
req.headers['If-Match'] = params.lock unless skip_lock
|
46
49
|
req.body = build_json_from_cocina(params)
|
47
50
|
end
|
48
51
|
|
@@ -51,6 +54,7 @@ module Dor
|
|
51
54
|
build_cocina_from_response(resp)
|
52
55
|
end
|
53
56
|
# rubocop:enable Metrics/AbcSize
|
57
|
+
# rubocop:enable Metrics/MethodLength
|
54
58
|
|
55
59
|
# Pull in metadata from Symphony and updates descriptive metadata
|
56
60
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
@@ -27,15 +27,13 @@ module Dor
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# Determines if a new version can be opened for a DOR object.
|
30
|
-
# @param params [Hash] optional params (see dor-services-app)
|
31
30
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
32
31
|
# @raise [UnexpectedResponse] when the response is not successful.
|
33
32
|
# @return [Boolean] true if a new version can be opened
|
34
33
|
# rubocop:disable Metrics/MethodLength
|
35
|
-
def openable?
|
34
|
+
def openable?
|
36
35
|
resp = connection.get do |req|
|
37
36
|
req.url "#{base_path}/openable"
|
38
|
-
req.params = params
|
39
37
|
end
|
40
38
|
|
41
39
|
raise_exception_based_on_response!(resp) unless resp.success?
|
@@ -52,20 +50,30 @@ module Dor
|
|
52
50
|
# rubocop:enable Metrics/MethodLength
|
53
51
|
|
54
52
|
# Open new version for an object
|
55
|
-
# @param
|
56
|
-
# @
|
53
|
+
# @param description [String] a description of the object version being opened - required
|
54
|
+
# @param significance [String] 'major' 'minor' or 'admin' - required
|
55
|
+
# @param opening_user_name [String] sunetid - defaults to nil
|
56
|
+
# @param assume_accessioned [Boolean] if true, does not check whether object has been accessioned; defaults to false
|
57
57
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
58
58
|
# @raise [UnexpectedResponse] when the response is not successful.
|
59
|
-
# @return [
|
59
|
+
# @return [Cocina::Models::DROWithMetadata|CollectionWithMetadata|AdminPolicyWithMetadata] cocina model with updated version
|
60
60
|
def open(**params)
|
61
|
-
|
62
|
-
|
61
|
+
resp = connection.post do |req|
|
62
|
+
req.url open_new_version_path
|
63
|
+
req.headers['Content-Type'] = 'application/json'
|
64
|
+
req.body = params.to_json if params.any?
|
65
|
+
end
|
63
66
|
|
64
|
-
|
67
|
+
raise_exception_based_on_response!(resp) unless resp.success?
|
68
|
+
|
69
|
+
build_cocina_from_response(resp)
|
65
70
|
end
|
66
71
|
|
67
72
|
# Close current version for an object
|
68
|
-
# @param
|
73
|
+
# @param description [String] (optional) - a description of the object version being opened
|
74
|
+
# @param significance [String] (optional) - 'major' 'minor' or 'admin'
|
75
|
+
# @param user_name [String] (optional) - sunetid
|
76
|
+
# @param start_accession [Boolean] (optional) - whether to start accessioning workflow; defaults to true
|
69
77
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
70
78
|
# @raise [UnexpectedResponse] when the response is not successful.
|
71
79
|
# @return [String] a message confirming successful closing
|
@@ -99,22 +107,6 @@ module Dor
|
|
99
107
|
"#{api_version}/objects/#{object_identifier}"
|
100
108
|
end
|
101
109
|
|
102
|
-
# Make request to server to open a new version
|
103
|
-
# @param params [Hash] optional params (see dor-services-app)
|
104
|
-
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
105
|
-
# @raise [UnexpectedResponse] on an unsuccessful response from the server
|
106
|
-
# @return [String] the plain text from the server
|
107
|
-
def open_new_version_response(**params)
|
108
|
-
resp = connection.post do |req|
|
109
|
-
req.url open_new_version_path
|
110
|
-
req.headers['Content-Type'] = 'application/json'
|
111
|
-
req.body = params.to_json if params.any?
|
112
|
-
end
|
113
|
-
return resp.body if resp.success?
|
114
|
-
|
115
|
-
raise_exception_based_on_response!(resp)
|
116
|
-
end
|
117
|
-
|
118
110
|
def base_path
|
119
111
|
"#{object_path}/versions"
|
120
112
|
end
|
@@ -8,9 +8,9 @@ module Dor
|
|
8
8
|
# API calls that are about a repository objects
|
9
9
|
class Objects < VersionedService
|
10
10
|
# Creates a new object in DOR
|
11
|
-
# @param params [Cocina::Models::RequestDRO,Cocina::Models::RequestCollection,Cocina::Models::
|
11
|
+
# @param params [Cocina::Models::RequestDRO,Cocina::Models::RequestCollection,Cocina::Models::RequestAdminPolicy]
|
12
12
|
# @param assign_doi [Boolean]
|
13
|
-
# @return [Cocina::Models::
|
13
|
+
# @return [Cocina::Models::DROWithMetadata,Cocina::Models::CollectionWithMetadata,Cocina::Models::AdminPolicyWithMetadata] the returned model
|
14
14
|
def register(params:, assign_doi: false)
|
15
15
|
resp = connection.post do |req|
|
16
16
|
req.url "#{api_version}/objects"
|
@@ -13,6 +13,8 @@ module Dor
|
|
13
13
|
412 => PreconditionFailedResponse
|
14
14
|
}.freeze
|
15
15
|
|
16
|
+
JSON_API_MIME_TYPE = 'application/vnd.api+json'
|
17
|
+
|
16
18
|
def initialize(connection:, version:)
|
17
19
|
@connection = connection
|
18
20
|
@api_version = version
|
@@ -28,7 +30,7 @@ module Dor
|
|
28
30
|
attr_reader :connection, :api_version
|
29
31
|
|
30
32
|
def raise_exception_based_on_response!(response, object_identifier = nil)
|
31
|
-
data = if response.headers
|
33
|
+
data = if response.headers.fetch('content-type', '').start_with?(JSON_API_MIME_TYPE)
|
32
34
|
JSON.parse(response.body)
|
33
35
|
else
|
34
36
|
{}
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dor-services-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 10.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
- Michael Giarlo
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-04-
|
12
|
+
date: 2022-04-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -37,14 +37,14 @@ dependencies:
|
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.76.0
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.76.0
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: deprecation
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,7 +213,7 @@ dependencies:
|
|
213
213
|
- - ">="
|
214
214
|
- !ruby/object:Gem::Version
|
215
215
|
version: '0'
|
216
|
-
description:
|
216
|
+
description:
|
217
217
|
email:
|
218
218
|
- jcoyne@justincoyne.com
|
219
219
|
- leftwing@alumni.rutgers.edu
|
@@ -262,7 +262,7 @@ homepage: https://github.com/sul-dlss/dor-services-client
|
|
262
262
|
licenses: []
|
263
263
|
metadata:
|
264
264
|
rubygems_mfa_required: 'true'
|
265
|
-
post_install_message:
|
265
|
+
post_install_message:
|
266
266
|
rdoc_options: []
|
267
267
|
require_paths:
|
268
268
|
- lib
|
@@ -280,8 +280,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
280
|
- !ruby/object:Gem::Version
|
281
281
|
version: '0'
|
282
282
|
requirements: []
|
283
|
-
rubygems_version: 3.
|
284
|
-
signing_key:
|
283
|
+
rubygems_version: 3.1.4
|
284
|
+
signing_key:
|
285
285
|
specification_version: 4
|
286
286
|
summary: A client for dor-services-app
|
287
287
|
test_files: []
|