Parent

Class/Module Index [+]

Quicksearch

Rack::DriverSelect

Constants

HEADER_TO_ENV_MAP

Public Class Methods

new(app, opts={}) click to toggle source
# File lib/sinatra/rack_driver_select.rb, line 20
def initialize(app, opts={})
  @app = app
  @opts = opts
end

Public Instance Methods

call(env) click to toggle source
# File lib/sinatra/rack_driver_select.rb, line 30
def call(env)
  original_settings = { }
  req = Rack::Request.new(env)
  if req.params['api'] and req.params['api']['driver']
    env['HTTP_X_DELTACLOUD_DRIVER'] = req.params['api']['driver']
  end
  if req.params['api'] and req.params['api']['provider']
    env['HTTP_X_DELTACLOUD_PROVIDER'] = req.params['api']['provider']
  end
  HEADER_TO_ENV_MAP.each do |header, name|
    original_settings[name] = Thread.current[name]
    new_setting = extract_header(env, header)
    Thread.current[name] = new_setting if new_setting
  end

  @app.call(env)
ensure
  original_settings.each { |name, value| Thread.current[name] = value }
end
extract_header(env, header) click to toggle source
# File lib/sinatra/rack_driver_select.rb, line 50
def extract_header(env, header)
  env[header].downcase if env[header]
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.