Sha256: 3bc1a49ed539357343863ea5274c2d5f681d86486e75c6e1ad0e26ea3ce6aa3a

Contents?: true

Size: 1.99 KB

Versions: 3

Compression:

Stored size: 1.99 KB

Contents

# binding request data and operation object

class OpenAPIParser::RequestOperation
  class << self
    # @param [OpenAPIParser::Config] config
    # @param [OpenAPIParser::PathItemFinder] path_item_finder
    # @return [OpenAPIParser::RequestOperation, nil]
    def create(http_method, request_path, path_item_finder, config)
      operation, original_path, path_params = path_item_finder.operation_object(http_method, request_path)

      return nil unless operation

      self.new(http_method, original_path, operation, path_params, config)
    end
  end

  # @!attribute [r] operation_object
  #   @return [OpenAPIParser::Schemas::Operation]
  # @!attribute [r] path_params
  #   @return [Hash{String => String}]
  # @!attribute [r] config
  #   #   @return [OpenAPIParser::Config]
  # @!attribute [r] http_method
  #   @return [String]
  # @!attribute [r] original_path
  #   @return [String]
  attr_reader :operation_object, :path_params, :config, :http_method, :original_path

  # @param [OpenAPIParser::Config] config
  def initialize(http_method, original_path, operation_object, path_params, config)
    @http_method = http_method.to_s
    @original_path = original_path
    @operation_object = operation_object
    @path_params = path_params || {}
    @config = config
  end

  def validate_path_params(options = nil)
    options = config.path_params_options unless options
    operation_object&.validate_path_params(path_params, options)
  end

  # support application/json only :(
  def validate_request_body(content_type, params, options = nil)
    options = config.request_body_options unless options
    operation_object&.validate_request_body(content_type, params, options)
  end

  def validate_response_body(status_code, content_type, data)
    operation_object&.validate_response_body(status_code, content_type, data)
  end

  def validate_request_parameter(params, options = nil)
    options = config.request_validator_options unless options
    operation_object&.validate_request_parameter(params, options)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
openapi_parser-0.1.5 lib/openapi_parser/request_operation.rb
openapi_parser-0.1.4 lib/openapi_parser/request_operation.rb
openapi_parser-0.1.3 lib/openapi_parser/request_operation.rb