Class: OpenapiFirst::BodyParserMiddleware
- Inherits:
-
Object
- Object
- OpenapiFirst::BodyParserMiddleware
- Defined in:
- lib/openapi_first/body_parser_middleware.rb
Constant Summary collapse
- RACK_INPUT =
'rack.input'- ROUTER_PARSED_BODY =
'router.parsed_body'
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, options = {}) ⇒ BodyParserMiddleware
constructor
A new instance of BodyParserMiddleware.
Constructor Details
#initialize(app, options = {}) ⇒ BodyParserMiddleware
Returns a new instance of BodyParserMiddleware.
7 8 9 10 |
# File 'lib/openapi_first/body_parser_middleware.rb', line 7 def initialize(app, = {}) @app = app @raise = .fetch(:raise_error, false) end |
Instance Method Details
#call(env) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/openapi_first/body_parser_middleware.rb', line 15 def call(env) env[ROUTER_PARSED_BODY] = parse_body(env) @app.call(env) rescue BodyParsingError => e raise if @raise err = { title: "Failed to parse body as #{env['CONTENT_TYPE']}", status: '400' } err[:detail] = e.cause unless ENV['RACK_ENV'] == 'production' errors = [err] Rack::Response.new( MultiJson.dump(errors: errors), 400, Rack::CONTENT_TYPE => 'application/vnd.api+json' ).finish end |