Class: Dor::Services::Client::SDR
- Inherits:
-
VersionedService
- Object
- VersionedService
- Dor::Services::Client::SDR
- Extended by:
- Deprecation
- Defined in:
- lib/dor/services/client/sdr.rb
Overview
API calls that are about preserved objects
Instance Method Summary collapse
-
#content_diff(current_content:, subset: 'all', version: nil) ⇒ Moab::FileInventoryDifference
Retrieves file difference manifest for contentMetadata from SDR.
-
#current_version ⇒ Integer
Gets the current version number for the object.
-
#initialize(connection:, version:, object_identifier:) ⇒ SDR
constructor
A new instance of SDR.
-
#metadata(datastream:) ⇒ String, NilClass
Datastream content from previous version of the object (from SDR storage), or nil if response status is 404.
- #signature_catalog ⇒ Object
Constructor Details
#initialize(connection:, version:, object_identifier:) ⇒ SDR
Returns a new instance of SDR.
15 16 17 18 |
# File 'lib/dor/services/client/sdr.rb', line 15 def initialize(connection:, version:, object_identifier:) super(connection: connection, version: version) @object_identifier = object_identifier end |
Instance Method Details
#content_diff(current_content:, subset: 'all', version: nil) ⇒ Moab::FileInventoryDifference
Retrieves file difference manifest for contentMetadata from SDR
52 53 54 55 56 57 58 |
# File 'lib/dor/services/client/sdr.rb', line 52 def content_diff(current_content:, subset: 'all', version: nil) raise ArgumentError, "Invalid subset value: #{subset}" unless %w[all shelve preserve publish].include?(subset) resp = content_diff_response(current_content: current_content, subset: subset, version: version) Moab::FileInventoryDifference.parse(resp) end |
#current_version ⇒ Integer
Gets the current version number for the object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/dor/services/client/sdr.rb', line 24 def current_version xml = current_version_response begin doc = Nokogiri::XML xml raise if doc.root.name != 'currentVersion' return Integer(doc.text) rescue StandardError raise MalformedResponse, "Unable to parse XML from current_version API call: #{xml}" end end |
#metadata(datastream:) ⇒ String, NilClass
Returns datastream content from previous version of the object (from SDR storage), or nil if response status is 404.
63 64 65 66 67 68 69 70 71 |
# File 'lib/dor/services/client/sdr.rb', line 63 def (datastream:) resp = connection.get do |req| req.url "#{base_path}/metadata/#{datastream}.xml" end return resp.body if resp.success? return if resp.status == 404 raise UnexpectedResponse, ResponseErrorFormatter.format(response: resp, object_identifier: object_identifier) end |
#signature_catalog ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/dor/services/client/sdr.rb', line 37 def signature_catalog resp = signature_catalog_response return Moab::SignatureCatalog.new(digital_object_id: object_identifier, version_id: 0) if resp.status == 404 raise UnexpectedResponse, ResponseErrorFormatter.format(response: resp, object_identifier: object_identifier) unless resp.success? Moab::SignatureCatalog.parse resp.body end |