lib/preservation/client/objects.rb in preservation-client-0.2.2 vs lib/preservation/client/objects.rb in preservation-client-0.3.0
- old
+ new
@@ -2,22 +2,63 @@
module Preservation
class Client
# API calls that are about Preserved Objects
class Objects < VersionedApiService
+ # @param [Array] druids - required list of druids with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
+ # @param [String] resp_format - desired format of the HTTP response (default csv, json also possible)
+ # @return body of HTTP response from Preservation API - the checksums and filesize for each druid
+ def checksums(druids: [], resp_format: 'csv')
+ post('objects/checksums', druids: druids, format: resp_format)
+ end
# @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
# @return [Integer] the current version of the Preserved Object
def current_version(druid)
- resp_body = get_json("objects/#{druid}.json", druid, 'current_version')
+ resp_body = get_json("objects/#{druid}.json", druid)
resp_body[:current_version]
end
- # @param [Array] druids - required list of druids with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
- # @param [String] :resp_format - desired format of the HTTP response (default csv, json also possible)
- # @return body of HTTP response from Preservation API
- def checksums(druids: [], resp_format: 'csv')
- post('objects/checksums', { druids: druids, format: resp_format }, 'checksums')
+ # retrieve a content file from a Moab object
+ # @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
+ # @param [String] filepath - the path of the file relative to the moab content directory
+ # @param [String] version - the version of the file requested (defaults to nil for latest version)
+ def content(druid:, filepath:, version: nil)
+ file(druid, 'content', filepath, version)
+ end
+
+ # retrieve a manifest file from a Moab object
+ # @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
+ # @param [String] filepath - the path of the file relative to the moab manifest directory
+ # @param [String] version - the version of the file requested (defaults to nil for latest version)
+ def manifest(druid:, filepath:, version: nil)
+ file(druid, 'manifest', filepath, version)
+ end
+
+ # retrieve a metadata file from a Moab object
+ # @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
+ # @param [String] filepath - the path of the file relative to the moab metadata directory
+ # @param [String] version - the version of the file requested (defaults to nil for latest version)
+ def metadata(druid:, filepath:, version: nil)
+ file(druid, 'metadata', filepath, version)
+ end
+
+ # convenience method for retrieving latest signatureCatalog.xml file from a Moab object
+ # @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
+ def signature_catalog(druid)
+ manifest(druid: druid, filepath: 'signatureCatalog.xml')
+ end
+
+ private
+
+ # get a file from a Moab object
+ # @param [String] druid - with or without prefix: 'druid:ab123cd4567' OR 'ab123cd4567'
+ # @param [String] category - one of 'manifest', 'metadata' or 'content'
+ # @param [String] filepath - the path of the file relative to the moab category directory
+ # @param [String] version - the version of the file requested (defaults to nil for latest version)
+ # @return the retrieved file
+ def file(druid, category, filepath, version = nil)
+ get("objects/#{druid}/file", category: category, filepath: filepath, version: version)
end
end
end
end