Class: Committee::Middleware::RequestValidation

Inherits:
Base
  • Object
show all
Defined in:
lib/committee/middleware/request_validation.rb

Instance Method Summary collapse

Methods inherited from Base

#call, get_schema

Constructor Details

#initialize(app, options = {}) ⇒ RequestValidation

Returns a new instance of RequestValidation.



3
4
5
6
7
8
9
10
# File 'lib/committee/middleware/request_validation.rb', line 3

def initialize(app, options={})
  super

  @strict  = options[:strict]

  # deprecated
  @allow_extra = options[:allow_extra]
end

Instance Method Details

#handle(request) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/committee/middleware/request_validation.rb', line 12

def handle(request)
  schema_validator = build_schema_validator(request)
  schema_validator.request_validate(request)

  raise Committee::NotFound, "That request method and path combination isn't defined." if !schema_validator.link_exist? && @strict

  @app.call(request.env)
rescue Committee::BadRequest, Committee::InvalidRequest
  raise if @raise
  @error_class.new(400, :bad_request, $!.message).render
rescue Committee::NotFound => e
  raise if @raise
  @error_class.new(
    404,
    :not_found,
    e.message
  ).render
rescue JSON::ParserError
  raise Committee::InvalidRequest if @raise
  @error_class.new(400, :bad_request, "Request body wasn't valid JSON.").render
end