diff --git a/lib/openapi_parser/concerns/parameter_validatable.rb b/lib/openapi_parser/concerns/parameter_validatable.rb index 78c7031..1e56377 100644 --- a/lib/openapi_parser/concerns/parameter_validatable.rb +++ b/lib/openapi_parser/concerns/parameter_validatable.rb @@ -13,6 +13,18 @@ def validate_request_parameter(params, headers, options) validate_query_parameter(params, object_reference, options) end + def header_parameter_hash + divided_parameter_hash['header'] || {} + end + + def path_parameter_hash + divided_parameter_hash['path'] || {} + end + + def query_parameter_hash + divided_parameter_hash['query'] || {} + end + private # @param [Hash] params query parameter hash @@ -29,18 +41,6 @@ def validate_header_parameter(headers, object_reference, options) OpenAPIParser::ParameterValidator.validate_parameter(header_parameter_hash, headers, object_reference, options, true) end - def header_parameter_hash - divided_parameter_hash['header'] || [] - end - - def path_parameter_hash - divided_parameter_hash['path'] || [] - end - - def query_parameter_hash - divided_parameter_hash['query'] || [] - end - # @return [Hash{String => Hash{String => Parameter}}] hash[in][name] => Parameter def divided_parameter_hash @divided_parameter_hash ||= diff --git a/lib/openapi_parser/request_operation.rb b/lib/openapi_parser/request_operation.rb index f6b4d07..d0312b9 100644 --- a/lib/openapi_parser/request_operation.rb +++ b/lib/openapi_parser/request_operation.rb @@ -65,7 +65,6 @@ def validate_response_body(response_body, response_validate_options = nil) # @param [OpenAPIParser::SchemaValidator::Options] options request validator options def validate_request_parameter(params, headers, options = nil) options ||= config.request_validator_options - path_item&.validate_request_parameter(params, headers, options) operation_object&.validate_request_parameter(params, headers, options) end diff --git a/lib/openapi_parser/schemas/operation.rb b/lib/openapi_parser/schemas/operation.rb index 96b729c..d5fe12e 100644 --- a/lib/openapi_parser/schemas/operation.rb +++ b/lib/openapi_parser/schemas/operation.rb @@ -7,6 +7,8 @@ module OpenAPIParser::Schemas class Operation < Base include OpenAPIParser::ParameterValidatable + alias path_item parent + openapi_attr_values :tags, :summary, :description, :deprecated openapi_attr_value :operation_id, schema_key: :operationId @@ -30,5 +32,18 @@ def validate_request_body(content_type, params, options) def validate_response(response_body, response_validate_options) responses&.validate(response_body, response_validate_options) end + + def header_parameter_hash + @header_parameter_hash ||= path_item.header_parameter_hash.merge(super) + end + + def path_parameter_hash + @path_parameter_hash ||= path_item.path_parameter_hash.merge(super) + end + + def query_parameter_hash + @query_parameter_hash ||= path_item.query_parameter_hash.merge(super) + end + end end