module ActiveFedora::Versionable
def bad_headers(response)
def bad_headers(response) "Unknown response format. Got '#{response.headers['content-type']}', but was expecting 'text/turtle'" end
def create_version
def create_version resp = ActiveFedora.fedora.connection.post(versions_uri, nil, slug: version_name) @versions = nil resp.success? end
def has_versions?
def has_versions? ActiveFedora.fedora.connection.head(versions_uri) true rescue Ldp::NotFound false end
def model_type
def model_type if respond_to?(:metadata) metadata.ldp_source.graph.query({ predicate: ::RDF.type }).objects else resource.query({ subject: resource.rdf_subject, predicate: ::RDF.type }).objects end end
def restore_version(label)
def restore_version(label) resp = ActiveFedora.fedora.connection.patch(versions.with_label(label).uri, nil) @versions = nil reload refresh_attributes if respond_to?("refresh_attributes") resp.success? end
def status_message(response)
def status_message(response) "Unexpected return value #{response.status} when retrieving datastream content at #{uri}\n\t#{response.body}" end
def version_name
def version_name if versions.all.empty? "version1" else "version" + (versions.all.count + 1).to_s end end
def versions(reload = false)
Returns an array of ActiveFedora::VersionsGraph::ResourceVersion objects.
def versions(reload = false) response = versions_request return ActiveFedora::VersionsGraph.new unless response if reload @versions = ActiveFedora::VersionsGraph.new << versions_request.reader else @versions ||= ActiveFedora::VersionsGraph.new << versions_request.reader end end
def versions_request
def versions_request return false unless has_versions? ActiveFedora.fedora.connection.get(versions_uri) end
def versions_uri
def versions_uri uri + '/fcr:versions' end