dor-services-client 9.1.1 → 10.2.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 +20 -1
- data/Gemfile +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.rb +0 -21
- 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
- metadata +9 -10
- data/lib/dor/services/client/object_metadata.rb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06256135ae4d1e556af51bd67aa764f3bdf4095503b5e7c41daf9fa32093be49
|
4
|
+
data.tar.gz: 9007c044ff70251c24b9216b447b4190c4162b4f97b8ce2d8c488223d75d0d92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ec452bfeb53407eed48aa5342a339e4137c95542547fcf098c7b9d91ba9cb0930e1afb3d42a2ce5c6e6bc0a779e6bd4555250cdb4fb37d566eb1d034b450f4f
|
7
|
+
data.tar.gz: eda0ad02dec02532b6430a46d997d9df4d5aeb963274efd9f08fedbb645d41721b81791d6a7641b7bd0e9834e9a02bafc8ae9e1ce4ece19e747a61b253351837
|
data/.rubocop.yml
CHANGED
@@ -13,7 +13,7 @@ Metrics/BlockLength:
|
|
13
13
|
- 'spec/**/*'
|
14
14
|
|
15
15
|
RSpec/MultipleMemoizedHelpers:
|
16
|
-
|
16
|
+
Enabled: false
|
17
17
|
|
18
18
|
RSpec/ExampleLength:
|
19
19
|
Max: 10
|
@@ -134,3 +134,22 @@ RSpec/FactoryBot/SyntaxMethods: # new in 2.7
|
|
134
134
|
Enabled: true
|
135
135
|
RSpec/Rails/AvoidSetupHook: # new in 2.4
|
136
136
|
Enabled: true
|
137
|
+
|
138
|
+
Lint/RefinementImportMethods: # new in 1.27
|
139
|
+
Enabled: true
|
140
|
+
Security/CompoundHash: # new in 1.28
|
141
|
+
Enabled: true
|
142
|
+
Style/FetchEnvVar: # new in 1.28
|
143
|
+
Enabled: true
|
144
|
+
Style/NestedFileDirname: # new in 1.26
|
145
|
+
Enabled: true
|
146
|
+
Style/ObjectThen: # new in 1.28
|
147
|
+
Enabled: true
|
148
|
+
Style/RedundantInitialize: # new in 1.27
|
149
|
+
Enabled: true
|
150
|
+
RSpec/BeEq: # new in 2.9.0
|
151
|
+
Enabled: true
|
152
|
+
RSpec/BeNil: # new in 2.9.0
|
153
|
+
Enabled: true
|
154
|
+
RSpec/VerifiedDoubleReference: # new in 2.10.0
|
155
|
+
Enabled: true
|
data/Gemfile
CHANGED
@@ -4,7 +4,7 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
6
6
|
|
7
|
-
gem 'activesupport', ENV
|
7
|
+
gem 'activesupport', ENV.fetch('RAILS_VERSION', nil) if ENV['RAILS_VERSION']
|
8
8
|
|
9
9
|
# Specify your gem's dependencies in dor-services-client.gemspec
|
10
10
|
gemspec
|
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.77.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)
|
@@ -55,27 +55,6 @@ module Dor
|
|
55
55
|
build_cocina_from_response(resp)
|
56
56
|
end
|
57
57
|
|
58
|
-
# Retrieves the Cocina model and response metadata
|
59
|
-
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
60
|
-
# @raise [UnexpectedResponse] when the response is not successful.
|
61
|
-
# @return [Array<Cocina::Models::DRO,Cocina::Models::Collection,Cocina::Models::AdminPolicy,ObjectMetadata>] a tuple where
|
62
|
-
# the first is the model and the second is a ObjectMetadata object
|
63
|
-
def find_with_metadata
|
64
|
-
resp = connection.get do |req|
|
65
|
-
req.url object_path
|
66
|
-
end
|
67
|
-
raise_exception_based_on_response!(resp) unless resp.success?
|
68
|
-
|
69
|
-
model = Cocina::Models.build(JSON.parse(resp.body))
|
70
|
-
|
71
|
-
# Don't use #slice here as Faraday will downcase the keys.
|
72
|
-
metadata = ObjectMetadata.new(updated_at: resp.headers['Last-Modified'],
|
73
|
-
created_at: resp.headers['X-Created-At'],
|
74
|
-
etag: resp.headers['ETag'])
|
75
|
-
[model, metadata]
|
76
|
-
end
|
77
|
-
deprecation_deprecate find_with_metadata: 'Use find instead with provides models with metadata.'
|
78
|
-
|
79
58
|
# Get a list of the collections. (Similar to Valkyrie's find_inverse_references_by)
|
80
59
|
# @raise [UnexpectedResponse] if the request is unsuccessful.
|
81
60
|
# @return [Array<Cocina::Models::DRO>]
|
@@ -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"
|
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.2.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-
|
12
|
+
date: 2022-05-02 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.77.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.77.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
|
@@ -249,7 +249,6 @@ files:
|
|
249
249
|
- lib/dor/services/client/metadata.rb
|
250
250
|
- lib/dor/services/client/mutate.rb
|
251
251
|
- lib/dor/services/client/object.rb
|
252
|
-
- lib/dor/services/client/object_metadata.rb
|
253
252
|
- lib/dor/services/client/object_version.rb
|
254
253
|
- lib/dor/services/client/objects.rb
|
255
254
|
- lib/dor/services/client/response_error_formatter.rb
|
@@ -262,7 +261,7 @@ homepage: https://github.com/sul-dlss/dor-services-client
|
|
262
261
|
licenses: []
|
263
262
|
metadata:
|
264
263
|
rubygems_mfa_required: 'true'
|
265
|
-
post_install_message:
|
264
|
+
post_install_message:
|
266
265
|
rdoc_options: []
|
267
266
|
require_paths:
|
268
267
|
- lib
|
@@ -280,8 +279,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
279
|
- !ruby/object:Gem::Version
|
281
280
|
version: '0'
|
282
281
|
requirements: []
|
283
|
-
rubygems_version: 3.
|
284
|
-
signing_key:
|
282
|
+
rubygems_version: 3.2.32
|
283
|
+
signing_key:
|
285
284
|
specification_version: 4
|
286
285
|
summary: A client for dor-services-app
|
287
286
|
test_files: []
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'deprecation'
|
4
|
-
|
5
|
-
module Dor
|
6
|
-
module Services
|
7
|
-
class Client
|
8
|
-
# An object representing metadata about the cocina object returned by the object show method
|
9
|
-
class ObjectMetadata
|
10
|
-
extend Deprecation
|
11
|
-
|
12
|
-
attr_reader :created_at, :updated_at, :etag
|
13
|
-
|
14
|
-
def initialize(created_at:, updated_at:, etag: nil)
|
15
|
-
@created_at = created_at
|
16
|
-
@updated_at = updated_at
|
17
|
-
@etag = etag
|
18
|
-
end
|
19
|
-
|
20
|
-
def [](key)
|
21
|
-
case key
|
22
|
-
when 'Last-Modified'
|
23
|
-
updated_at
|
24
|
-
when 'X-Created-At'
|
25
|
-
created_at
|
26
|
-
else
|
27
|
-
raise KeyError, 'Unknown key'
|
28
|
-
end
|
29
|
-
end
|
30
|
-
deprecation_deprecate(:[] => 'Hash accessor is no longer used, use object accessor instead')
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|