Class: Dor::Services::Client::SDR
- Inherits:
-
VersionedService
- Object
- VersionedService
- Dor::Services::Client::SDR
- 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
The datastream contents from the previous version of the digital object (fetched from SDR storage).
- #signature_catalog ⇒ Object
Constructor Details
#initialize(connection:, version:, object_identifier:) ⇒ SDR
Returns a new instance of SDR.
12 13 14 15 |
# File 'lib/dor/services/client/sdr.rb', line 12 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
48 49 50 51 52 53 54 |
# File 'lib/dor/services/client/sdr.rb', line 48 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
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/dor/services/client/sdr.rb', line 21 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
Returns The datastream contents from the previous version of the digital object (fetched from SDR storage).
58 59 60 61 62 63 64 65 66 |
# File 'lib/dor/services/client/sdr.rb', line 58 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, "#{resp.reason_phrase}: #{resp.status} (#{resp.body}) for #{object_identifier}" end |
#signature_catalog ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/dor/services/client/sdr.rb', line 33 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, "#{resp.reason_phrase}: #{resp.status} (#{resp.body}) for #{object_identifier}" unless resp.success? Moab::SignatureCatalog.parse resp.body end |