Sha256: 673e566aac7aabcb8d7d7f9fee695d16fcfc00012d24f633b6ecaa7fd7a3f193

Contents?: true

Size: 1008 Bytes

Versions: 4

Compression:

Stored size: 1008 Bytes

Contents

# frozen_string_literal: true

module OpenapiParameters
  # Header parses OpenAPI parameters from the request headers.
  class Header
    # @param parameters [Array<Hash>] The OpenAPI parameters
    # @param convert [Boolean] Whether to convert the values to the correct type.
    def initialize(parameters, convert: true)
      @parameters = parameters
      @convert = convert
    end

    # @param headers [Hash] The headers from the request. Use HeadersHash to convert a Rack env to a Hash.
    def unpack(headers)
      parameters.each_with_object({}) do |parameter, result|
        parameter = Parameter.new(parameter)
        next unless headers.key?(parameter.name)

        result[parameter.name] = catch :skip do
          value = Unpacker.unpack_value(parameter, headers[parameter.name])
          @convert ? Converter.convert(value, parameter.schema) : value
        end
      end
    end

    def unpack_env(env)
      unpack(HeadersHash.new(env))
    end

    attr_reader :parameters
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openapi_parameters-0.3.3 lib/openapi_parameters/header.rb
openapi_parameters-0.3.2 lib/openapi_parameters/header.rb
openapi_parameters-0.3.1 lib/openapi_parameters/header.rb
openapi_parameters-0.3.0 lib/openapi_parameters/header.rb