class Gitlab::Experiment::Middleware
Public Class Methods
new(app, base_path)
click to toggle source
# File lib/gitlab/experiment/middleware.rb, line 13 def initialize(app, base_path) @app = app @matcher = %r{^#{base_path}/(?<id>.+)} end
redirect(id, url)
click to toggle source
# File lib/gitlab/experiment/middleware.rb, line 6 def self.redirect(id, url) raise Error, 'no url to redirect to' if url.blank? experiment = Gitlab::Experiment.from_param(id) [303, { 'Location' => experiment.process_redirect_url(url) || raise(Error, 'not redirecting') }, []] end
Public Instance Methods
call(env)
click to toggle source
# File lib/gitlab/experiment/middleware.rb, line 18 def call(env) return @app.call(env) if env['REQUEST_METHOD'] != 'GET' || (match = @matcher.match(env['PATH_INFO'])).nil? Middleware.redirect(match[:id], env['QUERY_STRING']) rescue Error @app.call(env) end