Sha256: 52ce1eb6dbbcf0a7003fdac6faae96952d55dcca5be2d2f12ac48fad543a8b64

Contents?: true

Size: 741 Bytes

Versions: 7

Compression:

Stored size: 741 Bytes

Contents

# frozen_string_literal: true

require 'English'
module Rack
  module Accept
    module Header
      ALLOWED_CHARACTERS = %r{^([a-z*]+)/([a-z0-9*&\^\-_#{$ERROR_INFO}.+]+)(?:;([a-z0-9=;]+))?$}.freeze
      class << self
        # Corrected version of https://github.com/mjackson/rack-accept/blob/master/lib/rack/accept/header.rb#L40-L44
        def parse_media_type(media_type)
          # see http://tools.ietf.org/html/rfc6838#section-4.2 for allowed characters in media type names
          m = media_type&.match(ALLOWED_CHARACTERS)
          m ? [m[1], m[2], m[3] || ''] : []
        end
      end
    end

    class MediaType
      def parse_media_type(media_type)
        Header.parse_media_type(media_type)
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
grape-2.0.0 lib/grape/middleware/versioner/parse_media_type_patch.rb
grape-1.8.0 lib/grape/middleware/versioner/parse_media_type_patch.rb
grape-1.7.1 lib/grape/middleware/versioner/parse_media_type_patch.rb
grape-1.7.0 lib/grape/middleware/versioner/parse_media_type_patch.rb
grape-1.6.2 lib/grape/middleware/versioner/parse_media_type_patch.rb
grape-1.6.1 lib/grape/middleware/versioner/parse_media_type_patch.rb
grape-1.6.0 lib/grape/middleware/versioner/parse_media_type_patch.rb