Class: Dor::Services::Client::Object
- Inherits:
-
VersionedService
- Object
- VersionedService
- Dor::Services::Client::Object
- Extended by:
- Deprecation
- Defined in:
- lib/dor/services/client/object.rb
Overview
API calls that are about a repository object
Constant Summary collapse
- BASE_ALLOWED_FIELDS =
%i[external_identifier cocina_version label version administrative description].freeze
- DRO_ALLOWED_FIELDS =
BASE_ALLOWED_FIELDS + %i[content_type access identification structural geographic]
Constants inherited from VersionedService
VersionedService::EXCEPTION_CLASS, VersionedService::JSON_API_MIME_TYPE
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.
- #events ⇒ Object
-
#find(validate: false) ⇒ Cocina::Models::DROWithMetadata, ...
Retrieves the Cocina model.
-
#find_lite(administrative: true, description: true, access: true, structural: true, identification: true, geographic: true) ⇒ Object
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/ParameterLists.
-
#initialize(connection:, version:, object_identifier:) ⇒ Object
constructor
A new instance of Object.
-
#members ⇒ Array<Members::Member>
Get a list of the members.
- #mutate ⇒ Object
-
#notify_goobi ⇒ boolean
Notify the external Goobi system for a new object that was registered in DOR.
- #transfer ⇒ Object
-
#update_doi_metadata ⇒ boolean
Update the DOI metadata at DataCite.
-
#update_marc_record ⇒ boolean
Update the marc record for the given object.
-
#update_orcid_work ⇒ Boolean
Update the ORCID Work.
- #version ⇒ Object
- #workspace ⇒ Object
Methods inherited from VersionedService
#async_result, #with_querystring
Constructor Details
#initialize(connection:, version:, object_identifier:) ⇒ Object
Returns a new instance of Object.
14 15 16 17 18 19 |
# File 'lib/dor/services/client/object.rb', line 14 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.
11 12 13 |
# File 'lib/dor/services/client/object.rb', line 11 def object_identifier @object_identifier end |
Instance Method Details
#accession(params = {}) ⇒ Object
37 38 39 |
# File 'lib/dor/services/client/object.rb', line 37 def accession(params = {}) @accession ||= Accession.new(**parent_params.merge(params)) end |
#administrative_tags ⇒ Object
29 30 31 |
# File 'lib/dor/services/client/object.rb', line 29 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)
87 88 89 |
# File 'lib/dor/services/client/object.rb', line 87 def collections Collections.new(**parent_params).collections end |
#events ⇒ Object
21 22 23 |
# File 'lib/dor/services/client/object.rb', line 21 def events @events ||= Events.new(**parent_params) end |
#find(validate: false) ⇒ Cocina::Models::DROWithMetadata, ...
Retrieves the Cocina model
46 47 48 49 50 51 52 53 |
# File 'lib/dor/services/client/object.rb', line 46 def find(validate: false) resp = connection.get do |req| req.url object_path end raise_exception_based_on_response!(resp) unless resp.success? build_cocina_from_response(resp, validate: validate) end |
#find_lite(administrative: true, description: true, access: true, structural: true, identification: true, geographic: true) ⇒ Object
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/ParameterLists
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/dor/services/client/object.rb', line 62 def find_lite(administrative: true, description: true, access: true, structural: true, identification: true, geographic: true) fields = [] fields << :administrative if administrative fields << :description if description fields << :access if access fields << :structural if structural fields << :identification if identification fields << :geographic if geographic resp = connection.post '/graphql', query(fields), 'Content-Type' => 'application/json' raise_exception_based_on_response!(resp) unless resp.success? resp_json = JSON.parse(resp.body) # GraphQL returns 200 even when an error raise_graphql_exception(resp, resp_json) Cocina::Models.build_lite(resp_json['data']['cocinaObject']) end |
#members ⇒ Array<Members::Member>
Get a list of the members
94 95 96 |
# File 'lib/dor/services/client/object.rb', line 94 def members Members.new(**parent_params).members end |
#mutate ⇒ Object
104 105 106 |
# File 'lib/dor/services/client/object.rb', line 104 def mutate Mutate.new(**parent_params) end |
#notify_goobi ⇒ boolean
Notify the external Goobi system for a new object that was registered in DOR
154 155 156 157 158 159 160 161 |
# File 'lib/dor/services/client/object.rb', line 154 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 |
#transfer ⇒ Object
98 99 100 |
# File 'lib/dor/services/client/object.rb', line 98 def transfer Transfer.new(**parent_params) end |
#update_doi_metadata ⇒ boolean
Update the DOI metadata at DataCite
129 130 131 132 133 134 135 136 |
# File 'lib/dor/services/client/object.rb', line 129 def resp = connection.post do |req| req.url "#{object_path}/update_doi_metadata" end return true if resp.success? raise_exception_based_on_response!(resp) end |
#update_marc_record ⇒ boolean
Update the marc record for the given object
117 118 119 120 121 122 123 124 |
# File 'lib/dor/services/client/object.rb', line 117 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 |
#update_orcid_work ⇒ Boolean
Update the ORCID Work
141 142 143 144 145 146 147 148 |
# File 'lib/dor/services/client/object.rb', line 141 def update_orcid_work resp = connection.post do |req| req.url "#{object_path}/update_orcid_work" end return true if resp.success? raise_exception_based_on_response!(resp) end |
#version ⇒ Object
33 34 35 |
# File 'lib/dor/services/client/object.rb', line 33 def version @version ||= ObjectVersion.new(**parent_params) end |