Class: OpenapiFirst::RequestValidation::RequestBodyValidator

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

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(operation) ⇒ RequestBodyValidator

Returns a new instance of RequestBodyValidator.



8
9
10
# File 'lib/openapi_first/request_validation/request_body_validator.rb', line 8

def initialize(operation)
  @operation = operation
end

Instance Method Details

#validate!(parsed_request_body, request_content_type) ⇒ Object



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

def validate!(parsed_request_body, request_content_type)
  request_body = operation.request_body
  schema = request_body.schema_for(request_content_type)
  unless schema
    Failure.fail!(:unsupported_media_type,
                  message: "Unsupported Media Type '#{request_content_type}'")
  end

  if request_body.required? && parsed_request_body.nil?
    Failure.fail!(:invalid_body,
                  message: 'Request body is not defined')
  end

  validate_body!(parsed_request_body, schema)
end