Class: Dor::Services::Client::Object
- Inherits:
-
VersionedService
- Object
- VersionedService
- Dor::Services::Client::Object
- Defined in:
- lib/dor/services/client/object.rb
Overview
API calls that are about a repository object
Instance Attribute Summary collapse
-
#object_identifier ⇒ Object
readonly
Returns the value of attribute object_identifier.
Instance Method Summary collapse
- #accession(params = {}) ⇒ Object
- #administrative_tags ⇒ Object
-
#collections ⇒ Array<Cocina::Models::DRO>
Get a list of the collections.
- #embargo ⇒ Object
- #events ⇒ Object
-
#find ⇒ Cocina::Models::DRO, ...
Retrieves the Cocina model.
-
#initialize(connection:, version:, object_identifier:) ⇒ Object
constructor
A new instance of Object.
-
#members ⇒ Array<Members::Member>
Get a list of the members.
- #metadata ⇒ Object
-
#notify_goobi ⇒ boolean
Notify the external Goobi system for a new object that was registered in DOR.
-
#preserve(lane_id: nil) ⇒ String
Preserve an object (send to SDR).
-
#publish(workflow: nil, lane_id: nil) ⇒ boolean
Publish an object (send to PURL).
-
#refresh_metadata ⇒ boolean
Pull in metadata from Symphony and update descMetadata.
- #release_tags ⇒ Object
-
#shelve(lane_id: nil) ⇒ boolean
Shelve an object (send to Stacks).
-
#update(params:) ⇒ Cocina::Models::DRO, ...
Updates the object.
-
#update_marc_record ⇒ boolean
Update the marc record for the given object.
- #version ⇒ Object
- #workspace ⇒ Object
Methods inherited from VersionedService
Constructor Details
#initialize(connection:, version:, object_identifier:) ⇒ Object
Returns a new instance of Object.
11 12 13 14 15 16 |
# File 'lib/dor/services/client/object.rb', line 11 def initialize(connection:, version:, object_identifier:) raise ArgumentError, "The `object_identifier` parameter must be an identifier string: #{object_identifier.inspect}" unless object_identifier.is_a?(String) super(connection: connection, version: version) @object_identifier = object_identifier end |
Instance Attribute Details
#object_identifier ⇒ Object (readonly)
Returns the value of attribute object_identifier.
8 9 10 |
# File 'lib/dor/services/client/object.rb', line 8 def object_identifier @object_identifier end |
Instance Method Details
#accession(params = {}) ⇒ Object
46 47 48 |
# File 'lib/dor/services/client/object.rb', line 46 def accession(params = {}) @accession ||= Accession.new(**parent_params.merge(params)) end |
#administrative_tags ⇒ Object
34 35 36 |
# File 'lib/dor/services/client/object.rb', line 34 def @administrative_tags ||= AdministrativeTags.new(**parent_params) end |
#collections ⇒ Array<Cocina::Models::DRO>
Get a list of the collections. (Similar to Valkyrie’s find_inverse_references_by)
86 87 88 |
# File 'lib/dor/services/client/object.rb', line 86 def collections Collections.new(**parent_params).collections end |
#embargo ⇒ Object
42 43 44 |
# File 'lib/dor/services/client/object.rb', line 42 def @embargo ||= Embargo.new(**parent_params) end |
#events ⇒ Object
22 23 24 |
# File 'lib/dor/services/client/object.rb', line 22 def events @events ||= Events.new(**parent_params) end |
#find ⇒ Cocina::Models::DRO, ...
Retrieves the Cocina model
54 55 56 57 58 59 60 61 62 |
# File 'lib/dor/services/client/object.rb', line 54 def find resp = connection.get do |req| req.url object_path end return Cocina::Models.build(JSON.parse(resp.body)) if resp.success? raise_exception_based_on_response!(resp) end |
#members ⇒ Array<Members::Member>
Get a list of the members
93 94 95 |
# File 'lib/dor/services/client/object.rb', line 93 def members Members.new(**parent_params).members end |
#metadata ⇒ Object
18 19 20 |
# File 'lib/dor/services/client/object.rb', line 18 def @metadata ||= Metadata.new(**parent_params) end |
#notify_goobi ⇒ boolean
Notify the external Goobi system for a new object that was registered in DOR
178 179 180 181 182 183 184 185 |
# File 'lib/dor/services/client/object.rb', line 178 def notify_goobi resp = connection.post do |req| req.url "#{object_path}/notify_goobi" end return true if resp.success? raise_exception_based_on_response!(resp) end |
#preserve(lane_id: nil) ⇒ String
Preserve an object (send to SDR)
123 124 125 126 127 128 129 130 131 |
# File 'lib/dor/services/client/object.rb', line 123 def preserve(lane_id: nil) query_string = lane_id ? "?lane-id=#{lane_id}" : '' resp = connection.post do |req| req.url "#{object_path}/preserve#{query_string}" end return resp.headers['Location'] if resp.success? raise_exception_based_on_response!(resp) end |
#publish(workflow: nil, lane_id: nil) ⇒ boolean
Publish an object (send to PURL)
103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/dor/services/client/object.rb', line 103 def publish(workflow: nil, lane_id: nil) query_params = [].tap do |params| params << "workflow=#{workflow}" if workflow params << "lane-id=#{lane_id}" if lane_id end query_string = query_params.any? ? "?#{query_params.join('&')}" : '' publish_path = "#{object_path}/publish#{query_string}" resp = connection.post do |req| req.url publish_path end return resp.headers['Location'] if resp.success? raise_exception_based_on_response!(resp) end |
#refresh_metadata ⇒ boolean
Pull in metadata from Symphony and update descMetadata
165 166 167 168 169 170 171 172 |
# File 'lib/dor/services/client/object.rb', line 165 def resp = connection.post do |req| req.url "#{object_path}/refresh_metadata" end return true if resp.success? raise_exception_based_on_response!(resp) end |
#release_tags ⇒ Object
30 31 32 |
# File 'lib/dor/services/client/object.rb', line 30 def @release_tags ||= ReleaseTags.new(**parent_params) end |
#shelve(lane_id: nil) ⇒ boolean
Shelve an object (send to Stacks)
138 139 140 141 142 143 144 145 146 |
# File 'lib/dor/services/client/object.rb', line 138 def shelve(lane_id: nil) query_string = lane_id ? "?lane-id=#{lane_id}" : '' resp = connection.post do |req| req.url "#{object_path}/shelve#{query_string}" end return resp.headers['Location'] if resp.success? raise_exception_based_on_response!(resp) end |
#update(params:) ⇒ Cocina::Models::DRO, ...
Updates the object
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/dor/services/client/object.rb', line 69 def update(params:) resp = connection.patch do |req| req.url object_path req.headers['Content-Type'] = 'application/json' # asking the service to return JSON (else it'll be plain text) req.headers['Accept'] = 'application/json' req.body = params.to_json end return Cocina::Models.build(JSON.parse(resp.body)) if resp.success? raise_exception_based_on_response!(resp) end |
#update_marc_record ⇒ boolean
Update the marc record for the given object
152 153 154 155 156 157 158 159 |
# File 'lib/dor/services/client/object.rb', line 152 def update_marc_record resp = connection.post do |req| req.url "#{object_path}/update_marc_record" end return true if resp.success? raise_exception_based_on_response!(resp) end |
#version ⇒ Object
38 39 40 |
# File 'lib/dor/services/client/object.rb', line 38 def version @version ||= ObjectVersion.new(**parent_params) end |