Module: JSONAPI::MimeTypes

Defined in:
lib/jsonapi/mime_types.rb

Class Method Summary collapse

Class Method Details

.installObject



9
10
11
12
13
14
15
16
# File 'lib/jsonapi/mime_types.rb', line 9

def self.install
  Mime::Type.register JSONAPI::MEDIA_TYPE, :api_json

  parsers = ActionDispatch::Request.parameter_parsers.merge(
    Mime::Type.lookup(JSONAPI::MEDIA_TYPE).symbol => parser
  )
  ActionDispatch::Request.parameter_parsers = parsers
end

.parserObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jsonapi/mime_types.rb', line 18

def self.parser
  lambda do |body|
    begin
      data = JSON.parse(body)
      if data.is_a?(Hash)
        data.with_indifferent_access
      else
        fail JSONAPI::Exceptions::InvalidRequestFormat.new
      end
    rescue JSON::ParserError => e
      { _parser_exception: JSONAPI::Exceptions::BadRequest.new(e.to_s)  }
    rescue => e
      { _parser_exception: e }
    end
  end
end