lib/utility/extension_mapping_util.rb (111 lines of code) (raw):
#
# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.
#
# frozen_string_literal: true
require 'active_support/core_ext/hash'
module Utility
class ExtensionMappingUtil
@extension_to_mime = {
:doc => %w[
application/x-tika-msoffice
application/msword
].freeze,
:docx => %w[
application/x-tika-ooxml
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.openxmlformats-officedocument.wordprocessingml.template
application/vnd.ms-word.template.macroenabled.12
application/vnd.ms-word.document.macroenabled.12
].freeze,
:html => %w[
text/html
application/xhtml+xml
].freeze,
:odt => %w[
application/x-vnd.oasis.opendocument.graphics-template
application/vnd.sun.xml.writer application/x-vnd.oasis.opendocument.text
application/x-vnd.oasis.opendocument.text-web
application/x-vnd.oasis.opendocument.spreadsheet-template
application/vnd.oasis.opendocument.formula-template
application/vnd.oasis.opendocument.presentation
application/vnd.oasis.opendocument.image-template
application/x-vnd.oasis.opendocument.graphics
application/vnd.oasis.opendocument.chart-template
application/vnd.oasis.opendocument.presentation-template
application/x-vnd.oasis.opendocument.image-template
application/vnd.oasis.opendocument.formula
application/x-vnd.oasis.opendocument.image
application/vnd.oasis.opendocument.spreadsheet-template
application/x-vnd.oasis.opendocument.chart-template
application/x-vnd.oasis.opendocument.formula
application/vnd.oasis.opendocument.spreadsheet
application/vnd.oasis.opendocument.text-web
application/vnd.oasis.opendocument.text-template
application/vnd.oasis.opendocument.text
application/x-vnd.oasis.opendocument.formula-template
application/x-vnd.oasis.opendocument.spreadsheet
application/x-vnd.oasis.opendocument.chart
application/vnd.oasis.opendocument.text-master
application/x-vnd.oasis.opendocument.text-master
application/x-vnd.oasis.opendocument.text-template
application/vnd.oasis.opendocument.graphics
application/vnd.oasis.opendocument.graphics-template
application/x-vnd.oasis.opendocument.presentation
application/vnd.oasis.opendocument.image
application/x-vnd.oasis.opendocument.presentation-template
application/vnd.oasis.opendocument.chart
].freeze,
:one => %w[
application/onenote
application/msonenote
].freeze,
:pdf => %w[
application/pdf
].freeze,
:ppt => %w[
application/vnd.ms-powerpoint
].freeze,
:pptx => %w[
application/vnd.openxmlformats-officedocument.presentationml.presentation
application/vnd.ms-powerpoint.presentation.macroenabled.12
application/vnd.openxmlformats-officedocument.presentationml.template
application/vnd.ms-powerpoint.slideshow.macroenabled.12
application/vnd.ms-powerpoint.addin.macroenabled.12
application/vnd.openxmlformats-officedocument.presentationml.slideshow
].freeze,
:rtf => %w[
message/richtext
text/richtext
text/rtf
application/rtf
].freeze,
:txt => %w[
text/plain
].freeze,
:xls => %w[
application/x-tika-msoffice
application/vnd.ms-excel
application/vnd.ms-excel.sheet.3
application/vnd.ms-excel.sheet.2
application/vnd.ms-excel.workspace.3
application/vnd.ms-excel.workspace.4
application/vnd.ms-excel.sheet.4
].freeze,
:xlsx => %w[
application/x-tika-ooxml
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.openxmlformats-officedocument.spreadsheetml.template
application/vnd.ms-excel.addin.macroenabled.12
application/vnd.ms-excel.template.macroenabled.12
application/vnd.ms-excel.sheet.macroenabled.12
].freeze
}.with_indifferent_access.freeze
def self.mime_to_extension
@mime_to_extension ||= @extension_to_mime.each_with_object({}) do |(key, values), memo|
values.each { |value| memo[value] = key.to_s }
end.with_indifferent_access.freeze
end
def self.get_extension(mime_type)
mime_to_extension[mime_type.to_s.downcase]
end
def self.get_mime_types(extension)
@extension_to_mime[extension.to_s.downcase]
end
end
end