travis-web/lib/travis/web/app/alt_versions.rb
2013-02-26 23:07:09 +01:00

36 lines
722 B
Ruby

class Travis::Web::App::AltVersions
attr_reader :app
def initialize(app)
@app = app
end
def call(env)
alt = alt_from_params(env) || alt_from_cookie(env)
env['travis.alt'] = alt if alt
status, headers, body = app.call(env)
set_cookie(headers, alt) if alt
[status, headers, body]
end
private
def set_cookie(headers, alt)
cookie = "alt=#{alt}; path=/"
puts "setting cookie #{cookie}"
headers['Set-Cookie'] = cookie
end
def alt_from_params(env)
alt_from_string env['QUERY_STRING']
end
def alt_from_cookie(env)
alt_from_string env['HTTP_COOKIE']
end
def alt_from_string(string)
$1 if string =~ /alt=([^&]*)/
end
end