dor-services-client 10.0.0 → 11.0.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 +19 -0
- data/Gemfile +1 -1
- data/README.md +5 -11
- data/dor-services-client.gemspec +1 -1
- data/lib/dor/services/client/accession.rb +4 -4
- data/lib/dor/services/client/metadata.rb +0 -53
- data/lib/dor/services/client/object.rb +0 -21
- data/lib/dor/services/client/object_version.rb +9 -5
- data/lib/dor/services/client/version.rb +1 -1
- metadata +5 -6
- 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: fe7dfec36a8319421bee77745fe97ce0b82d42ae37496dfa0b53da9924520855
|
4
|
+
data.tar.gz: c52d59d1f89e919d634403fad5008034ffff6a49bc7cc36de512bac0075fb4b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9698a746b759eff42f1b12ab31413c5c28527f1080649b8a8d9e62d56200871ae7907308d32161efaae83aa0507e95367e1d1566f401046246f200978e9253a
|
7
|
+
data.tar.gz: d76e0a78928835868bcc058369ea0f38933290110d42517d7b7440ccaa27eb3f45f41432de90e4b7e19031faeea2332f3236f1293edd462fc1feefc05aea6111
|
data/.rubocop.yml
CHANGED
@@ -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
|
@@ -136,14 +138,6 @@ object_client.metadata.descriptive
|
|
136
138
|
# Get the public XML representation
|
137
139
|
object_client.metadata.public_xml
|
138
140
|
|
139
|
-
# Update legacy XML representation
|
140
|
-
object_client.metadata.legacy_update(
|
141
|
-
descriptive: {
|
142
|
-
updated: Time.now,
|
143
|
-
content: '<descMetadata/>'
|
144
|
-
}
|
145
|
-
)
|
146
|
-
|
147
141
|
# Return the Cocina metadata
|
148
142
|
object_client.find
|
149
143
|
|
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.78.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
|
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 event - 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.
|
@@ -13,32 +13,6 @@ module Dor
|
|
13
13
|
@object_identifier = object_identifier
|
14
14
|
end
|
15
15
|
|
16
|
-
# Updates using the legacy SDR/Fedora3 metadata
|
17
|
-
# @param [Hash<Symbol,Hash>] opts the options for legacy update
|
18
|
-
# @option opts [Hash] :administrative Data for administrative metadata
|
19
|
-
# @option opts [Hash] :content Data for structural metadata
|
20
|
-
# @option opts [Hash] :descriptive Data for descriptive metadata
|
21
|
-
# @option opts [Hash] :geo Data for geographic metadata
|
22
|
-
# @option opts [Hash] :identity Data for identity metadata
|
23
|
-
# @option opts [Hash] :provenance Data for provenance metadata
|
24
|
-
# @option opts [Hash] :relationships Data for RELS-EXT metadata
|
25
|
-
# @option opts [Hash] :rights Data for access rights metadata
|
26
|
-
# @option opts [Hash] :technical Data for technical metadata
|
27
|
-
# @option opts [Hash] :version Data for version metadata
|
28
|
-
# @example:
|
29
|
-
# legacy_update(descriptive: { updated: '2001-12-20', content: '<descMetadata />' })
|
30
|
-
def legacy_update(opts)
|
31
|
-
opts = opts.slice(:administrative, :content, :descriptive, :geo, :identity, :provenance, :relationships, :rights, :technical, :version)
|
32
|
-
resp = connection.patch do |req|
|
33
|
-
req.url "#{base_path}/legacy"
|
34
|
-
req.headers['Content-Type'] = 'application/json'
|
35
|
-
req.body = opts.to_json
|
36
|
-
end
|
37
|
-
return if resp.success?
|
38
|
-
|
39
|
-
raise_exception_based_on_response!(resp, object_identifier)
|
40
|
-
end
|
41
|
-
|
42
16
|
# @return [String, NilClass] The Dublin Core XML representation of the object or nil if response is 404
|
43
17
|
# @raise [UnexpectedResponse] on an unsuccessful response from the server
|
44
18
|
def dublin_core
|
@@ -101,33 +75,6 @@ module Dor
|
|
101
75
|
raise_exception_based_on_response!(resp, object_identifier)
|
102
76
|
end
|
103
77
|
|
104
|
-
# rubocop:disable Lint/StructNewOverride
|
105
|
-
Datastream = Struct.new(:label, :dsid, :pid, :size, :mimeType, :versionId, keyword_init: true)
|
106
|
-
# rubocop:enable Lint/StructNewOverride
|
107
|
-
|
108
|
-
# @return [Array] the list of datastreams for the item
|
109
|
-
# @raise [UnexpectedResponse] on an unsuccessful response from the server
|
110
|
-
def datastreams
|
111
|
-
resp = connection.get do |req|
|
112
|
-
req.url "#{base_path}/datastreams"
|
113
|
-
end
|
114
|
-
raise_exception_based_on_response!(resp, object_identifier) unless resp.success?
|
115
|
-
|
116
|
-
JSON.parse(resp.body).map { |params| Datastream.new(**params.symbolize_keys!) }
|
117
|
-
end
|
118
|
-
|
119
|
-
# @param [String] dsid the identifier for the datastream
|
120
|
-
# @return [String] the contents of the specified datastream
|
121
|
-
# @raise [UnexpectedResponse] on an unsuccessful response from the server
|
122
|
-
def datastream(dsid)
|
123
|
-
resp = connection.get do |req|
|
124
|
-
req.url "#{base_path}/datastreams/#{dsid}"
|
125
|
-
end
|
126
|
-
raise_exception_based_on_response!(resp, object_identifier) unless resp.success?
|
127
|
-
|
128
|
-
resp.body
|
129
|
-
end
|
130
|
-
|
131
78
|
private
|
132
79
|
|
133
80
|
attr_reader :object_identifier
|
@@ -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,7 +50,10 @@ module Dor
|
|
52
50
|
# rubocop:enable Metrics/MethodLength
|
53
51
|
|
54
52
|
# Open new version for an object
|
55
|
-
# @param
|
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
|
56
57
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
57
58
|
# @raise [UnexpectedResponse] when the response is not successful.
|
58
59
|
# @return [Cocina::Models::DROWithMetadata|CollectionWithMetadata|AdminPolicyWithMetadata] cocina model with updated version
|
@@ -69,7 +70,10 @@ module Dor
|
|
69
70
|
end
|
70
71
|
|
71
72
|
# Close current version for an object
|
72
|
-
# @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
|
73
77
|
# @raise [NotFoundResponse] when the response is a 404 (object not found)
|
74
78
|
# @raise [UnexpectedResponse] when the response is not successful.
|
75
79
|
# @return [String] a message confirming successful closing
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dor-services-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 11.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-04
|
12
|
+
date: 2022-05-04 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.78.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.78.0
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: deprecation
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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
|
@@ -280,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
279
|
- !ruby/object:Gem::Version
|
281
280
|
version: '0'
|
282
281
|
requirements: []
|
283
|
-
rubygems_version: 3.
|
282
|
+
rubygems_version: 3.3.4
|
284
283
|
signing_key:
|
285
284
|
specification_version: 4
|
286
285
|
summary: A client for dor-services-app
|
@@ -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
|