Sha256: 66481a8416beadf710c4135e2fc8a16eeb038377090c94a106dfc22ef8a77592

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

module ActiveFedora::File::Attributes

  attr_writer :mime_type

  def mime_type
    @mime_type ||= fetch_mime_type
  end

  def original_name
    @original_name ||= fetch_original_name
  end

  def original_name= name
    @original_name = name
  end

  def digest
    response = metadata.ldp_source.graph.query(predicate: RDF::Vocab::PREMIS.hasMessageDigest)
    # fallback on old predicate for checksum
    response = metadata.ldp_source.graph.query(predicate: RDF::Vocab::Fcrepo4.digest) if response.empty?
    response.map(&:object)
  end

  def persisted_size
    ldp_source.head.headers['Content-Length'].to_i unless new_record?
  end

  def dirty_size
    content.size if changed? && content.respond_to?(:size)
  end

  def size
    dirty_size || persisted_size
  end

  def has_content?
    size && size > 0
  end

  def empty?
    !has_content?
  end

  private

    def links
      @links ||= Ldp::Response.links(ldp_source.head)
    end

    def default_mime_type
      'text/plain'
    end

    def fetch_mime_type
      return default_mime_type if new_record?
      ldp_source.head.headers['Content-Type']
    end

    def fetch_original_name
      return if new_record?
      m = ldp_source.head.headers['Content-Disposition'].match(/filename="(?<filename>[^"]*)";/)
      URI.decode(m[:filename])
    end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
active-fedora-9.4.1 lib/active_fedora/file/attributes.rb
active-fedora-9.4.0 lib/active_fedora/file/attributes.rb