class Rack::MogueraAuthentication

A Rack middleware inserts a Moguera Authentication.

@example config.ru

# Add Rack::MogueraAuthentication somewhere in your rack stack
use Rack::MogueraAuthentication do |request_access_key|

  # Search a secret_access_key by a request_access_key
  key_to_secret(request_access_key)
end

Public Class Methods

new(app, &block) click to toggle source
# File lib/rack/moguera_authentication.rb, line 14
def initialize(app, &block)
  @app = app
  @secret_block = block
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/moguera_authentication.rb, line 19
def call(env)
  begin
    request_token = Moguera::Authentication.new(env['HTTP_AUTHORIZATION'])
    auth = request_token.authenticate! do |access_key|
      secret_access_key = @secret_block.call(access_key)
      params = build_parameter(access_key, secret_access_key, env)

      Moguera::Authentication::Request.new(params)
    end

    env['moguera.auth'] = auth
  rescue => e
    env['moguera.error'] = e
  end

  @app.call(env)
end

Private Instance Methods

build_parameter(access_key, secret_access_key, env) click to toggle source
# File lib/rack/moguera_authentication.rb, line 39
def build_parameter(access_key, secret_access_key, env)
  {
      access_key: access_key,
      secret_access_key: secret_access_key,
      request_path: env['REQUEST_PATH'],
      request_method: env['REQUEST_METHOD'],
      content_type: env['CONTENT_TYPE'],
      http_date: env['HTTP_DATE']
  }
end