Class: OpenapiFirst::ValidatedRequest
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- OpenapiFirst::ValidatedRequest
- 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
-
#error ⇒ Failure?
readonly
A Failure object if the request is invalid.
-
#request_definition ⇒ Request?
readonly
The request definition if this request is defined in the API description.
Instance Method Summary collapse
-
#initialize(original_request, error:, parsed_request: nil, request_definition: nil, query_parser: nil) ⇒ ValidatedRequest
constructor
A new instance of ValidatedRequest.
-
#invalid? ⇒ Boolean
Checks if the request is invalid.
-
#known? ⇒ Boolean
Returns true if the request is defined.
-
#operation ⇒ Hash
The raw OpenAPI 3 operation object.
-
#operation_id ⇒ String?
The OpenAPI 3 operationId.
-
#parsed_body ⇒ Hash<String, anything>, anything
Parsed body.
-
#parsed_cookies ⇒ Hash<String, anything>
Parsed cookies.
-
#parsed_headers ⇒ Hash<String, anything>
Parsed headers.
-
#parsed_params ⇒ Hash<String, anything>
Merged path, query, body parameters.
-
#parsed_path_parameters ⇒ Hash<String, anything>
Parsed path parameters.
-
#parsed_query ⇒ Hash<String, anything>
Parsed query parameters.
-
#unknown? ⇒ Boolean
Returns true if the request is not defined.
-
#unknown_query_parameters ⇒ Hash
FIXME: Optimize this so it does not have to parse the query string a second time to find unknown parameters.
-
#valid? ⇒ Boolean
Checks if the request is valid.
Constructor Details
#initialize(original_request, error:, parsed_request: nil, request_definition: nil, query_parser: nil) ⇒ ValidatedRequest
Returns a new instance of ValidatedRequest.
11 12 13 14 15 16 17 |
# File 'lib/openapi_first/validated_request.rb', line 11 def initialize(original_request, error:, parsed_request: nil, request_definition: nil, query_parser: nil) super(original_request) @parsed_request = parsed_request @error = error @request_definition = request_definition @query_parser = query_parser end |
Instance Attribute Details
#error ⇒ Failure? (readonly)
A Failure object if the request is invalid
21 22 23 |
# File 'lib/openapi_first/validated_request.rb', line 21 def error @error end |
#request_definition ⇒ Request? (readonly)
The request definition if this request is defined in the API description
25 26 27 |
# File 'lib/openapi_first/validated_request.rb', line 25 def request_definition @request_definition end |
Instance Method Details
#invalid? ⇒ Boolean
Checks if the request is invalid.
68 |
# File 'lib/openapi_first/validated_request.rb', line 68 def invalid? = !valid? |
#known? ⇒ Boolean
Returns true if the request is defined.
71 |
# File 'lib/openapi_first/validated_request.rb', line 71 def known? = request_definition != nil |
#operation ⇒ Hash
Returns The raw OpenAPI 3 operation object.
33 |
# File 'lib/openapi_first/validated_request.rb', line 33 def_delegator :request_definition, :operation |
#operation_id ⇒ String?
Returns The OpenAPI 3 operationId.
29 |
# File 'lib/openapi_first/validated_request.rb', line 29 def_delegator :request_definition, :operation_id |
#parsed_body ⇒ Hash<String, anything>, anything
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 return a validation error if the body contains unknown fields.
62 |
# File 'lib/openapi_first/validated_request.rb', line 62 def parsed_body = @parsed_request&.body |
#parsed_cookies ⇒ Hash<String, anything>
Parsed cookies. This only returns the query parameters that are defined in the OpenAPI spec.
55 |
# File 'lib/openapi_first/validated_request.rb', line 55 def = @parsed_request&. || {} |
#parsed_headers ⇒ Hash<String, anything>
Parsed headers. This only returns the query parameters that are defined in the OpenAPI spec.
51 |
# File 'lib/openapi_first/validated_request.rb', line 51 def parsed_headers = @parsed_request&.headers || {} |
#parsed_params ⇒ Hash<String, anything>
Merged path, query, body parameters. Here path has the highest precedence, then query, then body.
79 80 81 |
# File 'lib/openapi_first/validated_request.rb', line 79 def parsed_params @parsed_params ||= parsed_body.to_h.merge(parsed_query, parsed_path_parameters) || {} end |
#parsed_path_parameters ⇒ Hash<String, anything>
Parsed path parameters
43 |
# File 'lib/openapi_first/validated_request.rb', line 43 def parsed_path_parameters = @parsed_request&.path || {} |
#parsed_query ⇒ Hash<String, anything>
Parsed query parameters. This only returns the query parameters that are defined in the OpenAPI spec.
47 |
# File 'lib/openapi_first/validated_request.rb', line 47 def parsed_query = @parsed_request&.query || {} |
#unknown? ⇒ Boolean
Returns true if the request is not defined.
74 |
# File 'lib/openapi_first/validated_request.rb', line 74 def unknown? = !known? |
#unknown_query_parameters ⇒ Hash
FIXME: Optimize this so it does not have to parse the query string a second time to find unknown parameters
37 38 39 |
# File 'lib/openapi_first/validated_request.rb', line 37 def unknown_query_parameters @query_parser&.unknown_values(query_string) end |
#valid? ⇒ Boolean
Checks if the request is valid.
65 |
# File 'lib/openapi_first/validated_request.rb', line 65 def valid? = error.nil? |