Sha256: b10f0f0c261b8621d8d7a75325e7bcb0cbe59a909b0b2c943e4e153402853dae

Contents?: true

Size: 636 Bytes

Versions: 5

Compression:

Stored size: 636 Bytes

Contents

module IdempotentRequest
  class Request
    attr_reader :request

    def initialize(env, config = {})
      @request = Rack::Request.new(env)
      @header_name = config.fetch(:header_key, 'HTTP_IDEMPOTENCY_KEY')
    end

    def key
      request.env[header_name]
    end

    def method_missing(method, *args)
      if request.respond_to?(method)
        request.send(method, *args)
      else
        super
      end
    end

    private

    def header_name
      key = @header_name.to_s
                        .upcase
                        .tr('-', '_')

      key.start_with?('HTTP_') ? key : "HTTP_#{key}"
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
idempotent-request-0.2.1 lib/idempotent-request/request.rb
idempotent-request-0.2.0 lib/idempotent-request/request.rb
idempotent-request-0.1.7 lib/idempotent-request/request.rb
idempotent-request-0.1.6 lib/idempotent-request/request.rb
idempotent-request-0.1.5 lib/idempotent-request/request.rb