Sha256: 84153ef37be4331277697a2bbb346adeb5dc25a4837086d1ea0c8e30def4c844

Contents?: true

Size: 1.1 KB

Versions: 10

Compression:

Stored size: 1.1 KB

Contents

module Hydra::Works
  class DetermineMimeType
    # Determines the mime type for a given file
    # @param [IO, File, Rack::Multipart::UploadedFile, #read] file
    # @param [String, NilClass] original_name of the file
    # @return [String]
    def self.call(file, original_name = nil)
      new(file, original_name).determine_mime_type
    end

    attr_reader :file, :original_name

    def initialize(file, original_name)
      @file = file
      @original_name = original_name
    end

    def determine_mime_type
      return file.mime_type if mime_type?
      return file.content_type if content_type?
      mime_type_from_name_or_path || 'application/octet-stream'
    end

    def mime_type_from_name_or_path
      return Hydra::PCDM::GetMimeTypeForFile.call(original_name) if original_name.present?
      return Hydra::PCDM::GetMimeTypeForFile.call(file.path) if file.respond_to?(:path)
    end

    private

      def mime_type?
        file.respond_to?(:mime_type) && file.mime_type.present?
      end

      def content_type?
        file.respond_to?(:content_type) && file.content_type.present?
      end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
hydra-works-2.2.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-2.1.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-2.0.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-1.2.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-1.1.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-1.0.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-0.17.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-0.16.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-0.15.0 lib/hydra/works/services/determine_mime_type.rb
hydra-works-0.14.0 lib/hydra/works/services/determine_mime_type.rb