Sha256: da7abf2e59305572c1422cd92a09262e9161d5fd67825747ba00aedc0bda7300

Contents?: true

Size: 757 Bytes

Versions: 1

Compression:

Stored size: 757 Bytes

Contents

require 'mime/types'

module Swagger
  class MimeType < String
    extend Forwardable
    def_delegators :@mime_type, :media_type, :sub_type

    MIME_TYPE_FORMAT = /(\w+)\/(\w+\.)?([\w\.]+)(\+\w+)?\s*(;.*)?/

    def initialize(mime_type_name)
      @mime_type_name = mime_type_name.to_s
      @mime_type = MIME::Types[@mime_type_name].first || base_type(@mime_type_name)
      fail ArgumentError, "Unknown mime type or suffix: #{mime_type_name}" if @mime_type.nil?
      super @mime_type_name
    end

    private

    def base_type(mime_type_name)
      media_type, _sub_type, _tree, suffix, _parameters = MIME_TYPE_FORMAT.match mime_type_name
      return MIME::Types["#{media_type}/#{suffix}"].first if media_type && suffix
      nil
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
swagger-core-0.2.0 lib/swagger/mime_type.rb