lib/grape/middleware/formatter.rb in grape-0.2.2 vs lib/grape/middleware/formatter.rb in grape-0.2.3

- old
+ new

@@ -1,17 +1,15 @@ require 'grape/middleware/base' module Grape module Middleware class Formatter < Base - include Formats def default_options { :default_format => :txt, :formatters => {}, - :content_types => {}, :parsers => {} } end def headers @@ -20,14 +18,14 @@ def before fmt = format_from_extension || format_from_params || options[:format] || format_from_header || options[:default_format] if content_types.key?(fmt) if !env['rack.input'].nil? and (body = env['rack.input'].read).strip.length != 0 - parser = parser_for fmt + parser = Grape::Parser::Base.parser_for fmt, options unless parser.nil? begin - body = parser.call(body) + body = parser.call body, env env['rack.request.form_hash'] = !env['rack.request.form_hash'].nil? ? env['rack.request.form_hash'].merge(body) : body env['rack.request.form_input'] = env['rack.input'] rescue # It's possible that it's just regular POST content -- just back off end @@ -40,14 +38,14 @@ end end def format_from_extension parts = request.path.split('.') - extension = parts.last.to_sym - if parts.size > 1 && content_types.key?(extension) - return extension + if parts.size > 1 + extension = parts.last.to_sym + return extension if content_types.key?(extension) end nil end def format_from_params @@ -72,15 +70,16 @@ } end def after status, headers, bodies = *@app_response - formatter = formatter_for env['api.format'] + formatter = Grape::Formatter::Base.formatter_for env['api.format'], options bodymap = bodies.collect do |body| - formatter.call(body) + formatter.call body, env end headers['Content-Type'] = content_types[env['api.format']] unless headers['Content-Type'] Rack::Response.new(bodymap, status, headers).to_a end + end end end