dor-services-client 15.2.0 → 15.3.0

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: aaec16bd6ab8deb272496997f7e8b3289652e81b01a8fd9b5cf3bbb7e19b04f8
4
- data.tar.gz: 0fb8f67b2da1991cc2ae8439d49e1bb3ec526db4d762a17efdaa7612bdbe858f
3
+ metadata.gz: 7e74ca0ad7c415b3106f4877959eb84fd330a1d6165fde35061b9b8cf329ed2f
4
+ data.tar.gz: 467ca654ab6c53959a8cfa59f8379357129de3f531a236091712c798ec6d24eb
5
5
  SHA512:
6
- metadata.gz: 7035e7003d3ac05987dd5ecdb902040ab3f5a5ac57c74fe245e7745e502b7a60ec4319fe0f9ac2f68713e062f46094493de01d3c748fdf93b6acb708a80240b2
7
- data.tar.gz: 87950288c58bef7e0795d05908a2a5fb700c3651ff0b780c54289e8f3ec66b9ac6c1c25415e54a3d5f16837b46a3835f21406223db9d277979abf82f15e3cfdd
6
+ metadata.gz: bbbd6072449d6d5204e446c314ea3e5b334ab7678ad3e99e6c04332a1020f97c8c2d6db5621f68958d19aa899f0790b47d78ca0bda2bf43107c6f54113cb7724
7
+ data.tar.gz: 57c5d87ca0045680736832ba487417add78b9a0a85a7f78192a470dd311d189d27f0f13f6e4219cedc24c962b8abe2f19ff93a2c772111289d8aa32d8ab58728
data/.circleci/config.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  version: 2.1
2
2
  orbs:
3
- ruby-rails: sul-dlss/ruby-rails@4.2.2
3
+ ruby-rails: sul-dlss/ruby-rails@4.2.3
4
4
  workflows:
5
5
  build:
6
6
  jobs:
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dor-services-client (15.2.0)
5
- activesupport (>= 4.2, < 8)
4
+ dor-services-client (15.3.0)
5
+ activesupport (>= 7.0.0)
6
6
  cocina-models (~> 0.99.0)
7
7
  deprecation
8
8
  faraday (~> 2.0)
@@ -12,8 +12,9 @@ PATH
12
12
  GEM
13
13
  remote: https://rubygems.org/
14
14
  specs:
15
- activesupport (7.2.1.1)
15
+ activesupport (8.0.1)
16
16
  base64
17
+ benchmark (>= 0.3)
17
18
  bigdecimal
18
19
  concurrent-ruby (~> 1.0, >= 1.3.1)
19
20
  connection_pool (>= 2.2.5)
@@ -23,15 +24,18 @@ GEM
23
24
  minitest (>= 5.1)
24
25
  securerandom (>= 0.3)
25
26
  tzinfo (~> 2.0, >= 2.0.5)
27
+ uri (>= 0.13.1)
26
28
  addressable (2.8.7)
27
29
  public_suffix (>= 2.0.2, < 7.0)
28
30
  ast (2.4.2)
29
31
  attr_extras (7.1.0)
30
32
  base64 (0.2.0)
31
- bigdecimal (3.1.8)
33
+ benchmark (0.4.0)
34
+ bigdecimal (3.1.9)
32
35
  byebug (11.1.3)
33
- cocina-models (0.99.0)
36
+ cocina-models (0.99.2)
34
37
  activesupport
38
+ commonmarker (= 2.0.1)
35
39
  deprecation
36
40
  dry-struct (~> 1.0)
37
41
  dry-types (~> 1.1)
@@ -45,9 +49,9 @@ GEM
45
49
  super_diff
46
50
  thor
47
51
  zeitwerk (~> 2.1)
48
- commonmarker (1.1.5-arm64-darwin)
49
- commonmarker (1.1.5-x86_64-darwin)
50
- commonmarker (1.1.5-x86_64-linux)
52
+ commonmarker (2.0.1-arm64-darwin)
53
+ commonmarker (2.0.1-x86_64-darwin)
54
+ commonmarker (2.0.1-x86_64-linux)
51
55
  concurrent-ruby (1.3.4)
52
56
  connection_pool (2.4.1)
53
57
  crack (1.0.0)
@@ -58,13 +62,15 @@ GEM
58
62
  diff-lcs (1.5.1)
59
63
  docile (1.4.1)
60
64
  drb (2.2.1)
61
- dry-core (1.0.1)
65
+ dry-core (1.1.0)
62
66
  concurrent-ruby (~> 1.0)
67
+ logger
63
68
  zeitwerk (~> 2.6)
64
- dry-inflector (1.1.0)
65
- dry-logic (1.5.0)
69
+ dry-inflector (1.2.0)
70
+ dry-logic (1.6.0)
71
+ bigdecimal
66
72
  concurrent-ruby (~> 1.0)
67
- dry-core (~> 1.0, < 2)
73
+ dry-core (~> 1.1)
68
74
  zeitwerk (~> 2.6)
69
75
  dry-struct (1.6.0)
70
76
  dry-core (~> 1.0, < 2)
@@ -78,43 +84,43 @@ GEM
78
84
  dry-inflector (~> 1.0)
79
85
  dry-logic (~> 1.4)
80
86
  zeitwerk (~> 2.6)
81
- edtf (3.1.1)
82
- activesupport (>= 3.0, < 8.0)
87
+ edtf (3.2.0)
88
+ activesupport (>= 3.0, < 9.0)
83
89
  equivalent-xml (0.6.0)
84
90
  nokogiri (>= 1.4.3)
85
- faraday (2.12.0)
86
- faraday-net_http (>= 2.0, < 3.4)
91
+ faraday (2.12.2)
92
+ faraday-net_http (>= 2.0, < 3.5)
87
93
  json
88
94
  logger
89
- faraday-net_http (3.3.0)
90
- net-http
95
+ faraday-net_http (3.4.0)
96
+ net-http (>= 0.5.0)
91
97
  faraday-retry (2.2.1)
92
98
  faraday (~> 2.0)
93
- hashdiff (1.1.1)
99
+ hashdiff (1.1.2)
94
100
  i18n (1.14.6)
95
101
  concurrent-ruby (~> 1.0)
96
102
  ice_nine (0.11.2)
97
- json (2.7.2)
103
+ json (2.9.1)
98
104
  jsonpath (1.1.5)
99
105
  multi_json
100
106
  language_server-protocol (3.17.0.3)
101
- logger (1.6.1)
102
- minitest (5.25.1)
107
+ logger (1.6.4)
108
+ minitest (5.25.4)
103
109
  multi_json (1.15.0)
104
- net-http (0.4.1)
110
+ net-http (0.6.0)
105
111
  uri
106
- nokogiri (1.16.7-arm64-darwin)
112
+ nokogiri (1.18.1-arm64-darwin)
107
113
  racc (~> 1.4)
108
- nokogiri (1.16.7-x86_64-darwin)
114
+ nokogiri (1.18.1-x86_64-darwin)
109
115
  racc (~> 1.4)
110
- nokogiri (1.16.7-x86_64-linux)
116
+ nokogiri (1.18.1-x86_64-linux-gnu)
111
117
  racc (~> 1.4)
112
118
  openapi3_parser (0.10.0)
113
119
  commonmarker (>= 1.0)
114
120
  openapi_parser (1.0.0)
115
- optimist (3.1.0)
121
+ optimist (3.2.0)
116
122
  parallel (1.26.3)
117
- parser (3.3.5.0)
123
+ parser (3.3.6.0)
118
124
  ast (~> 2.4.1)
119
125
  racc
120
126
  patience_diff (1.2.0)
@@ -123,8 +129,8 @@ GEM
123
129
  racc (1.8.1)
124
130
  rainbow (3.1.1)
125
131
  rake (13.2.1)
126
- regexp_parser (2.9.2)
127
- rexml (3.3.8)
132
+ regexp_parser (2.10.0)
133
+ rexml (3.4.0)
128
134
  rspec (3.13.0)
129
135
  rspec-core (~> 3.13.0)
130
136
  rspec-expectations (~> 3.13.0)
@@ -137,18 +143,18 @@ GEM
137
143
  rspec-mocks (3.13.2)
138
144
  diff-lcs (>= 1.2.0, < 2.0)
139
145
  rspec-support (~> 3.13.0)
140
- rspec-support (3.13.1)
141
- rubocop (1.67.0)
146
+ rspec-support (3.13.2)
147
+ rubocop (1.69.2)
142
148
  json (~> 2.3)
143
149
  language_server-protocol (>= 3.17.0)
144
150
  parallel (~> 1.10)
145
151
  parser (>= 3.3.0.2)
146
152
  rainbow (>= 2.2.2, < 4.0)
147
- regexp_parser (>= 2.4, < 3.0)
148
- rubocop-ast (>= 1.32.2, < 2.0)
153
+ regexp_parser (>= 2.9.3, < 3.0)
154
+ rubocop-ast (>= 1.36.2, < 2.0)
149
155
  ruby-progressbar (~> 1.7)
150
- unicode-display_width (>= 2.4.0, < 3.0)
151
- rubocop-ast (1.32.3)
156
+ unicode-display_width (>= 2.4.0, < 4.0)
157
+ rubocop-ast (1.37.0)
152
158
  parser (>= 3.3.1.0)
153
159
  rubocop-capybara (2.21.0)
154
160
  rubocop (~> 1.41)
@@ -162,22 +168,24 @@ GEM
162
168
  rubocop-rspec_rails (2.29.1)
163
169
  rubocop (~> 1.61)
164
170
  ruby-progressbar (1.13.0)
165
- securerandom (0.3.1)
171
+ securerandom (0.4.1)
166
172
  simplecov (0.22.0)
167
173
  docile (~> 1.1)
168
174
  simplecov-html (~> 0.11)
169
175
  simplecov_json_formatter (~> 0.1)
170
176
  simplecov-html (0.13.1)
171
177
  simplecov_json_formatter (0.1.4)
172
- super_diff (0.13.0)
178
+ super_diff (0.14.0)
173
179
  attr_extras (>= 6.2.4)
174
180
  diff-lcs
175
181
  patience_diff
176
182
  thor (1.3.2)
177
183
  tzinfo (2.0.6)
178
184
  concurrent-ruby (~> 1.0)
179
- unicode-display_width (2.6.0)
180
- uri (0.13.1)
185
+ unicode-display_width (3.1.3)
186
+ unicode-emoji (~> 4.0, >= 4.0.4)
187
+ unicode-emoji (4.0.4)
188
+ uri (1.0.2)
181
189
  webmock (3.24.0)
182
190
  addressable (>= 2.8.0)
183
191
  crack (>= 0.3.2)
@@ -186,6 +194,7 @@ GEM
186
194
 
187
195
  PLATFORMS
188
196
  arm64-darwin-23
197
+ arm64-darwin-24
189
198
  x86_64-darwin-19
190
199
  x86_64-darwin-20
191
200
  x86_64-darwin-21
data/README.md CHANGED
@@ -66,6 +66,9 @@ objects_client.register(params: {}, assign_doi: true)
66
66
  # Find object by source ID
67
67
  objects_client.find(source_id: 'sul:abc123')
68
68
 
69
+ # Get status for a batch of objects
70
+ objects_client.statuses(object_ids: ['druid:bc123df4567', 'druid:bc987gh6543'])
71
+
69
72
  # Interact with virtual objects
70
73
  virtual_objects_client = Dor::Services::Client.virtual_objects
71
74
 
@@ -87,39 +90,23 @@ object_client.update(params: dro)
87
90
  # Publish an object (push to PURL)
88
91
  object_client.publish(workflow: 'releaseWF', lane_id: 'low')
89
92
 
90
- # Shelve an object (push to Stacks)
91
- object_client.shelve(lane_id: 'low')
92
-
93
93
  # Start accessioning an object (initialize assemblyWF or specified workflow, and version object if needed)
94
94
  object_client.accession.start(**versioning_params)
95
95
 
96
- # Preserve an object (push to SDR)
97
- object_client.preserve(lane_id: 'low')
98
-
99
- # Update the MARC record (used in the releaseWF)
100
- object_client.update_marc_record
101
-
102
- # Update the DOI metadata (used by robot)
103
- object_client.update_doi_metadata
104
-
105
- # Update the Orcid work (used by robot)
106
- object_client.update_orcid_work
107
-
108
96
  # Copy metadata from Symphony into descMetadata
109
97
  object_client.refresh_descriptive_metadata_from_ils
110
98
 
111
99
  # Apply defaults from the item's AdminPolicy to the item itself
112
100
  object_client.apply_admin_policy_defaults
113
101
 
114
- # Send a notification to goobi
115
- object_client.notify_goobi
116
-
117
102
  # Manage versions
118
103
  object_client.version.inventory
119
104
  object_client.version.current
120
105
  # Returns a struct containing the status.
121
106
  # Status includes whether the object is open, assembling, accessioning, or closeable.
107
+ # See also objects_client.statuses for getting statuses in batch.
122
108
  object_client.version.status
109
+
123
110
  # see dor-services-app openapi.yml for optional params
124
111
  object_client.version.open(description: 'Changed title')
125
112
  # see dor-services-app openapi.yml for optional params
@@ -160,9 +147,8 @@ object_client.release_tags.list(public: true) # only public release tags (i.e. l
160
147
  object_client.events.create(type: type, data: data)
161
148
  object_client.events.list
162
149
 
163
- # Create and reset workspaces
150
+ # Create workspaces
164
151
  object_client.workspace.create(source: object_path_string)
165
- object_client.workspace.cleanup
166
152
 
167
153
  # Reindex
168
154
  object_client.reindex
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.required_ruby_version = '>= 3.0', '< 4'
26
26
 
27
- spec.add_dependency 'activesupport', '>= 4.2', '< 8'
27
+ spec.add_dependency 'activesupport', '>= 7.0.0'
28
28
  spec.add_dependency 'cocina-models', '~> 0.99.0'
29
29
  spec.add_dependency 'deprecation', '>= 0'
30
30
  spec.add_dependency 'faraday', '~> 2.0'
@@ -107,8 +107,6 @@ module Dor
107
107
  Transfer.new(**parent_params)
108
108
  end
109
109
 
110
- delegate :publish, :preserve, :shelve, to: :transfer
111
-
112
110
  def mutate
113
111
  Mutate.new(**parent_params)
114
112
  end
@@ -118,68 +116,41 @@ module Dor
118
116
  alias refresh_metadata refresh_descriptive_metadata_from_ils
119
117
  deprecation_deprecate refresh_metadata: 'Use refresh_descriptive_metadata_from_ils instead'
120
118
 
121
- # Update the marc record for the given object
119
+ # Reindex the object in Solr.
122
120
  # @raise [NotFoundResponse] when the response is a 404 (object not found)
123
121
  # @raise [UnexpectedResponse] when the response is not successful.
124
122
  # @return [boolean] true on success
125
- def update_marc_record
126
- resp = connection.post do |req|
127
- req.url "#{object_path}/update_marc_record"
128
- end
129
- return true if resp.success?
130
-
131
- raise_exception_based_on_response!(resp)
132
- end
133
-
134
- # Update the DOI metadata at DataCite
135
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
136
- # @return [boolean] true on success
137
- def update_doi_metadata
138
- resp = connection.post do |req|
139
- req.url "#{object_path}/update_doi_metadata"
140
- end
141
- return true if resp.success?
142
-
143
- raise_exception_based_on_response!(resp)
144
- end
145
-
146
- # Update the ORCID Work
147
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
148
- # @return [Boolean] true on success
149
- def update_orcid_work
123
+ def reindex
150
124
  resp = connection.post do |req|
151
- req.url "#{object_path}/update_orcid_work"
125
+ req.url "#{object_path}/reindex"
152
126
  end
153
127
  return true if resp.success?
154
128
 
155
129
  raise_exception_based_on_response!(resp)
156
130
  end
157
131
 
158
- # Notify the external Goobi system for a new object that was registered in DOR
132
+ # Publish an object (send to PURL)
159
133
  # @raise [NotFoundResponse] when the response is a 404 (object not found)
160
134
  # @raise [UnexpectedResponse] when the response is not successful.
161
- # @return [boolean] true on success
162
- def notify_goobi
163
- resp = connection.post do |req|
164
- req.url "#{object_path}/notify_goobi"
135
+ # @param [String] workflow (nil) which workflow to callback to.
136
+ # @param [String] lane_id for prioritization (default or low)
137
+ # @return [String] the URL of the background job on dor-service-app
138
+ # rubocop:disable Metrics/MethodLength
139
+ def publish(workflow: nil, lane_id: nil)
140
+ query_params = [].tap do |params|
141
+ params << "workflow=#{workflow}" if workflow
142
+ params << "lane-id=#{lane_id}" if lane_id
165
143
  end
166
- return true if resp.success?
167
-
168
- raise_exception_based_on_response!(resp)
169
- end
170
-
171
- # Reindex the object in Solr.
172
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
173
- # @raise [UnexpectedResponse] when the response is not successful.
174
- # @return [boolean] true on success
175
- def reindex
144
+ query_string = query_params.any? ? "?#{query_params.join('&')}" : ''
145
+ publish_path = "#{object_path}/publish#{query_string}"
176
146
  resp = connection.post do |req|
177
- req.url "#{object_path}/reindex"
147
+ req.url publish_path
178
148
  end
179
- return true if resp.success?
149
+ return resp.headers['Location'] if resp.success?
180
150
 
181
151
  raise_exception_based_on_response!(resp)
182
152
  end
153
+ # rubocop:enable Metrics/MethodLength
183
154
 
184
155
  private
185
156
 
@@ -41,6 +41,22 @@ module Dor
41
41
  build_cocina_from_response(resp, validate: validate)
42
42
  end
43
43
 
44
+ # Retrieves the version statuses for a batch of objects
45
+ # @param [Array<String>] object_ids the druids to get statuses for
46
+ # @return [Hash<String,VersionStatus>] Map of druids to statuses
47
+ # @raise [UnexpectedResponse] on an unsuccessful response from the server
48
+ def statuses(object_ids:)
49
+ resp = connection.post do |req|
50
+ req.url "#{objects_path}/versions/status"
51
+ req.headers['Content-Type'] = 'application/json'
52
+ req.body = { externalIdentifiers: object_ids }.to_json
53
+ end
54
+
55
+ raise_exception_based_on_response!(resp) unless resp.success?
56
+
57
+ JSON.parse(resp.body).transform_values { |status| ObjectVersion::VersionStatus.new(status.symbolize_keys!) }
58
+ end
59
+
44
60
  private
45
61
 
46
62
  def objects_path
@@ -3,7 +3,7 @@
3
3
  module Dor
4
4
  module Services
5
5
  class Client
6
- VERSION = '15.2.0'
6
+ VERSION = '15.3.0'
7
7
  end
8
8
  end
9
9
  end
@@ -31,24 +31,6 @@ module Dor
31
31
  end
32
32
  # rubocop:enable Metrics/AbcSize
33
33
 
34
- # Cleans up and resets the workspace
35
- # After an object has been copied to preservation the workspace can be
36
- # reset. This is called by the reset-workspace step of the accessionWF
37
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
38
- # @raise [UnexpectedResponse] when the response is not successful.
39
- # @param [String] lane_id for prioritization (default or low)
40
- # @return [String] the URL of the background job on dor-service-app
41
- def cleanup(lane_id: nil)
42
- cleanup_workspace_path = workspace_path
43
- cleanup_workspace_path += "?lane-id=#{lane_id}" if lane_id
44
- resp = connection.delete do |req|
45
- req.url cleanup_workspace_path
46
- end
47
- return resp.headers['Location'] if resp.success?
48
-
49
- raise_exception_based_on_response!(resp, object_identifier)
50
- end
51
-
52
34
  private
53
35
 
54
36
  def workspace_path
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: 15.2.0
4
+ version: 15.3.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: 2024-10-28 00:00:00.000000000 Z
12
+ date: 2025-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,20 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '4.2'
21
- - - "<"
22
- - !ruby/object:Gem::Version
23
- version: '8'
20
+ version: 7.0.0
24
21
  type: :runtime
25
22
  prerelease: false
26
23
  version_requirements: !ruby/object:Gem::Requirement
27
24
  requirements:
28
25
  - - ">="
29
26
  - !ruby/object:Gem::Version
30
- version: '4.2'
31
- - - "<"
32
- - !ruby/object:Gem::Version
33
- version: '8'
27
+ version: 7.0.0
34
28
  - !ruby/object:Gem::Dependency
35
29
  name: cocina-models
36
30
  requirement: !ruby/object:Gem::Requirement
@@ -252,7 +246,6 @@ files:
252
246
  - lib/dor/services/client/release_tag.rb
253
247
  - lib/dor/services/client/release_tags.rb
254
248
  - lib/dor/services/client/response_error_formatter.rb
255
- - lib/dor/services/client/transfer.rb
256
249
  - lib/dor/services/client/user_version.rb
257
250
  - lib/dor/services/client/version.rb
258
251
  - lib/dor/services/client/versioned_service.rb
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Dor
4
- module Services
5
- class Client
6
- # API calls that move data around.
7
- class Transfer < VersionedService
8
- # @param object_identifier [String] the pid for the object
9
- def initialize(connection:, version:, object_identifier:)
10
- super(connection: connection, version: version)
11
- @object_identifier = object_identifier
12
- end
13
-
14
- # Publish an object (send to PURL)
15
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
16
- # @raise [UnexpectedResponse] when the response is not successful.
17
- # @param [String] workflow (nil) which workflow to callback to.
18
- # @param [String] lane_id for prioritization (default or low)
19
- # @return [String] the URL of the background job on dor-service-app
20
- def publish(workflow: nil, lane_id: nil)
21
- query_params = [].tap do |params|
22
- params << "workflow=#{workflow}" if workflow
23
- params << "lane-id=#{lane_id}" if lane_id
24
- end
25
- query_string = query_params.any? ? "?#{query_params.join('&')}" : ''
26
- publish_path = "#{object_path}/publish#{query_string}"
27
- resp = connection.post do |req|
28
- req.url publish_path
29
- end
30
- return resp.headers['Location'] if resp.success?
31
-
32
- raise_exception_based_on_response!(resp)
33
- end
34
-
35
- # Preserve an object (send to SDR)
36
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
37
- # @raise [UnexpectedResponse] when the response is not successful.
38
- # @param [String] lane_id for prioritization (default or low)
39
- # @return [String] URL from Location response header if no errors
40
- def preserve(lane_id: nil)
41
- query_string = lane_id ? "?lane-id=#{lane_id}" : ''
42
- resp = connection.post do |req|
43
- req.url "#{object_path}/preserve#{query_string}"
44
- end
45
- return resp.headers['Location'] if resp.success?
46
-
47
- raise_exception_based_on_response!(resp)
48
- end
49
-
50
- # Shelve an object (send to Stacks)
51
- # @raise [NotFoundResponse] when the response is a 404 (object not found)
52
- # @raise [UnexpectedResponse] when the response is not successful.
53
- # @param [String] lane_id for prioritization (default or low)
54
- # @return [boolean] true on success
55
- def shelve(lane_id: nil)
56
- query_string = lane_id ? "?lane-id=#{lane_id}" : ''
57
- resp = connection.post do |req|
58
- req.url "#{object_path}/shelve#{query_string}"
59
- end
60
- return resp.headers['Location'] if resp.success?
61
-
62
- raise_exception_based_on_response!(resp)
63
- end
64
-
65
- private
66
-
67
- def object_path
68
- "#{api_version}/objects/#{object_identifier}"
69
- end
70
-
71
- attr_reader :object_identifier
72
- end
73
- end
74
- end
75
- end