Sha256: 8983b60703cec8b0e984e9882fc7a236a77c29323196732392c45067294e1efb

Contents?: true

Size: 1.2 KB

Versions: 8

Compression:

Stored size: 1.2 KB

Contents

require 'rack'

class Ey::Hmac::Adapter::Rack < Ey::Hmac::Adapter
  def initialize(request, options)
    super
    @request = if request.is_a?(Hash)
                 ::Rack::Request.new(request)
               else request
               end
  end

  def method
    request.request_method.to_s.upcase
  end

  def content_type
    request.content_type
  end

  def content_digest
    if existing = request.env['HTTP_CONTENT_DIGEST']
      existing
    elsif digest = body && Digest::MD5.hexdigest(body)
      request.env['HTTP_CONTENT_DIGEST'] = digest
    end
  end

  def body
    if request.env["rack.input"]
      request.env["rack.input"].rewind
      body = request.env["rack.input"].read
      request.env["rack.input"].rewind
      body == "" ? nil : body
    else nil
    end
  end

  def date
    request.env['HTTP_DATE'] ||= Time.now.httpdate
  end

  def path
    request.path
  end

  def sign!(key_id, key_secret)
    if options[:version]
      request.env['HTTP_X_SIGNATURE_VERSION'] = options[:version]
    end

    request.env["HTTP_#{authorization_header.to_s.upcase}"] = authorization(key_id, key_secret)
  end

  def authorization_signature
    request.env["HTTP_#{authorization_header.to_s.upcase}"]
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
ey-hmac-2.1.0 lib/ey-hmac/adapter/rack.rb
ey-hmac-2.0.2 lib/ey-hmac/adapter/rack.rb
ey-hmac-2.0.1 lib/ey-hmac/adapter/rack.rb
ey-hmac-2.0.0 lib/ey-hmac/adapter/rack.rb
ey-hmac-1.0.0 lib/ey-hmac/adapter/rack.rb
ey-hmac-0.1.3 lib/ey-hmac/adapter/rack.rb
ey-hmac-0.1.2 lib/ey-hmac/adapter/rack.rb
ey-hmac-0.1.1 lib/ey-hmac/adapter/rack.rb