class Hijacker::Middleware

Constants

DEFAULT_BAD_URL
DEFAULT_NOT_FOUND
HEADER_KEY

Attributes

bad_url[R]
not_found[R]

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/hijacker/middleware.rb, line 13
def initialize(app, options = {})
  options = options.dup
  @app = app
  @not_found = options.delete(:not_found) || DEFAULT_NOT_FOUND
  @bad_url   = options.delete(:bad_url)   || DEFAULT_BAD_URL

  unless options.blank?
    raise "Unknown Hijacker::Middleware options #{options.keys.join(",")}"
  end
end

Public Instance Methods

call(env) click to toggle source
# File lib/hijacker/middleware.rb, line 24
def call(env)
  begin
    Hijacker.connect(*determine_databases(env))
  rescue Hijacker::InvalidDatabase => e
    return not_found.call(e.database, env)
  rescue Hijacker::UnparseableURL => e
    return bad_url.call(e.message, env)
  end

  @app.call(env)
end

Private Instance Methods

determine_databases(env) click to toggle source
# File lib/hijacker/middleware.rb, line 38
def determine_databases(env)
  if client = env[HEADER_KEY]
    Hijacker::Database.find_master_and_sister_for(client)
  else
    RequestParser.from_env(env).determine_databases
  end
end