Class: OpenapiFirst::RequestBodyValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/openapi_first/request_body_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(operation, env) ⇒ RequestBodyValidator

Returns a new instance of RequestBodyValidator.



5
6
7
8
# File 'lib/openapi_first/request_body_validator.rb', line 5

def initialize(operation, env)
  @operation = operation
  @env = env
end

Instance Method Details

#validate!Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/openapi_first/request_body_validator.rb', line 10

def validate!
  request_body = @operation.request_body
  return unless request_body

  request_content_type = Rack::Request.new(@env).content_type
  schema = request_body.schema_for(request_content_type)
  RequestValidation.fail!(415, :header) unless schema

  parsed_request_body = BodyParser.new.parse_body(@env)
  RequestValidation.fail!(400, :body) if request_body.required? && parsed_request_body.nil?

  validate_body!(parsed_request_body, schema)
  parsed_request_body
rescue BodyParsingError => e
  RequestValidation.fail!(400, :body, message: e.message)
end