Class: OpenapiFirst::ValidatedRequest

Inherits:
SimpleDelegator
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/openapi_first/validated_request.rb

Overview

A validated request. It can be valid or not.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(original_request, error:, parsed_values: {}, request_definition: nil) ⇒ ValidatedRequest

Returns a new instance of ValidatedRequest.



11
12
13
14
15
16
# File 'lib/openapi_first/validated_request.rb', line 11

def initialize(original_request, error:, parsed_values: {}, request_definition: nil)
  super(original_request)
  @parsed_values = Hash.new({}).merge(parsed_values)
  @error = error
  @request_definition = request_definition
end

Instance Attribute Details

#errorFailure? (readonly)

Returns The error that occurred during validation.

Returns:

  • (Failure, nil)

    The error that occurred during validation.



22
# File 'lib/openapi_first/validated_request.rb', line 22

attr_reader :parsed_values, :error, :request_definition

#parsed_valuesObject (readonly)

Returns the value of attribute parsed_values.



22
23
24
# File 'lib/openapi_first/validated_request.rb', line 22

def parsed_values
  @parsed_values
end

#request_definitionObject (readonly)

Returns the value of attribute request_definition.



22
# File 'lib/openapi_first/validated_request.rb', line 22

attr_reader :parsed_values, :error, :request_definition

Instance Method Details

#invalid?Boolean

Checks if the request is invalid.

Returns:

  • (Boolean)


66
67
68
# File 'lib/openapi_first/validated_request.rb', line 66

def invalid?
  !valid?
end

#known?Boolean

Returns true if the request is defined.

Returns:

  • (Boolean)


71
72
73
# File 'lib/openapi_first/validated_request.rb', line 71

def known?
  request_definition != nil
end

#operationHash

Returns The OpenAPI 3 operation object.

Returns:

  • (Hash)

    The OpenAPI 3 operation object



29
# File 'lib/openapi_first/validated_request.rb', line 29

def_delegators :request_definition, :operation_id, :operation

#operation_idString?

Returns The OpenAPI 3 operationId.

Returns:

  • (String, nil)

    The OpenAPI 3 operationId



29
# File 'lib/openapi_first/validated_request.rb', line 29

def_delegators :request_definition, :operation_id, :operation

#parsed_bodyObject

Parsed body. This parses the body according to the content type. Note that this returns the hole body, not only the fields that are defined in the OpenAPI spec. You can use JSON Schemas ‘additionalProperties` or `unevaluatedProperties` to returns a validation error if the body contains unknown fields.



56
57
58
# File 'lib/openapi_first/validated_request.rb', line 56

def parsed_body
  parsed_values[:body]
end

#parsed_cookiesObject

Parsed cookies. This only returns the query parameters that are defined in the OpenAPI spec.



48
49
50
# File 'lib/openapi_first/validated_request.rb', line 48

def parsed_cookies
  parsed_values[:cookies]
end

#parsed_headersObject

Parsed headers. This only returns the query parameters that are defined in the OpenAPI spec.



43
44
45
# File 'lib/openapi_first/validated_request.rb', line 43

def parsed_headers
  parsed_values[:headers]
end

#parsed_paramsObject

Merged path, query, body parameters. Here path has the highest precedence, then query, then body.



77
78
79
# File 'lib/openapi_first/validated_request.rb', line 77

def parsed_params
  @parsed_params ||= parsed_body.merge(parsed_query, parsed_path_parameters)
end

#parsed_path_parametersObject

Parsed path parameters

@return [Hash] A string keyed hash of path parameters


33
34
35
# File 'lib/openapi_first/validated_request.rb', line 33

def parsed_path_parameters
  parsed_values[:path]
end

#parsed_queryObject

Parsed query parameters. This only returns the query parameters that are defined in the OpenAPI spec.



38
39
40
# File 'lib/openapi_first/validated_request.rb', line 38

def parsed_query
  parsed_values[:query]
end

#valid?Boolean

Checks if the request is valid.

Returns:

  • (Boolean)


61
62
63
# File 'lib/openapi_first/validated_request.rb', line 61

def valid?
  error.nil?
end