Sha256: ae1e9db37ffb9001965916bf27099c1fcb79d112929472ca3d4c126926bfa03b

Contents?: true

Size: 1.97 KB

Versions: 3

Compression:

Stored size: 1.97 KB

Contents

# TODO: externalDocs
# TODO: callbacks
# TODO: security
# TODO: servers

module OpenAPIParser::Schemas
  class Operation < Base
    openapi_attr_values :tags, :summary, :description, :deprecated

    openapi_attr_value :operation_id, schema_key: :operationId

    openapi_attr_list_object :parameters, Parameter, reference: true

    # @!attribute [r] request_body
    #   @return [OpenAPIParser::Schemas::RequestBody, nil] return OpenAPI3 object
    openapi_attr_object :request_body, RequestBody, reference: true, schema_key: :requestBody

    # @!attribute [r] responses
    #   @return [OpenAPIParser::Schemas::Responses, nil] return OpenAPI3 object
    openapi_attr_object :responses, Responses, reference: false

    def validate_request_body(content_type, params, options)
      request_body&.validate_request_body(content_type, params, options)
    end

    # @param [Integer] status_code
    def validate_response_body(status_code, content_type, data)
      responses&.validate_response_body(status_code, content_type, data)
    end

    # @param [OpenAPIParser::SchemaValidator::Options] options
    def validate_request_parameter(params, options)
      OpenAPIParser::ParameterValidator.validate_parameter(query_parameter_hash, params, object_reference, options)
    end

    def validate_path_params(path_params, options)
      OpenAPIParser::ParameterValidator.validate_parameter(path_parameter_hash, path_params, object_reference, options)
    end

    private

      def path_parameter_hash
        @path_parameter_hash ||= (parameters || []).
                                   select(&:in_path?).
                                   map { |param| [param.name, param] }.
                                   to_h
      end

      def query_parameter_hash
        @query_parameter_hash ||= (parameters || []).
                                    select(&:in_query?).
                                    map { |param| [param.name, param] }.
                                    to_h
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
openapi_parser-0.1.8 lib/openapi_parser/schemas/operation.rb
openapi_parser-0.1.7 lib/openapi_parser/schemas/operation.rb
openapi_parser-0.1.6 lib/openapi_parser/schemas/operation.rb