class OpenAPIParser::Schemas::Responses

Public Instance Methods

validate(response_body, response_validate_options) click to toggle source

validate params data by definition find response object by status_code and content_type github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#patterned-fields-1 @param [OpenAPIParser::RequestOperation::ValidatableResponseBody] response_body @param [OpenAPIParser::SchemaValidator::ResponseValidateOptions] response_validate_options

# File lib/openapi_parser/schemas/responses.rb, line 18
def validate(response_body, response_validate_options)
  return nil unless response

  if (res = find_response_object(response_body.status_code))

    return res.validate(response_body, response_validate_options)
  end

  raise ::OpenAPIParser::NotExistStatusCodeDefinition, object_reference if response_validate_options.strict

  nil
end

Private Instance Methods

find_response_object(status_code) click to toggle source

@param [Integer] status_code @return [Response]

# File lib/openapi_parser/schemas/responses.rb, line 35
def find_response_object(status_code)
  if (res = response[status_code.to_s])
    return res
  end

  wild_card = status_code_to_wild_card(status_code)
  if (res = response[wild_card])
    return res
  end

  default
end
status_code_to_wild_card(status_code) click to toggle source

parse 400 -> 4xx OpenAPI3 allow 1xx, 2xx, 3xx… only, don't allow 41x @param [Integer] status_code

# File lib/openapi_parser/schemas/responses.rb, line 51
def status_code_to_wild_card(status_code)
  top = status_code / 100
  "#{top}XX"
end