class Rack::TradeTracker::Handler
Constants
- LOGGER_REGEX
- PARAMS_MAP
Attributes
app[R]
domain[R]
env[R]
path[R]
request[R]
Public Class Methods
new(domain, path, app)
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 17 def initialize(domain, path, app) @domain = domain @path = path @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 23 def call(env) @env = env @request = Rack::Request.new(env) return @app.call(env) unless matches_path? begin redirect rescue Parameters::MissingParametersError redirect_to_root end end
Private Instance Methods
log(message, level = :info)
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 88 def log(message, level = :info) return unless logger logger.send(level, message) if logger.respond_to?(level) end
logger()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 94 def logger @logger ||= env.find { |key, _| LOGGER_REGEX.match(key) }&.[] 1 end
matches_path?()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 40 def matches_path? request.path == path end
parameters()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 44 def parameters @_parameters ||= Parameters.new(request.params) end
params_hash()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 48 def params_hash @_params_hash ||= parameters.to_hash end
redirect()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 58 def redirect response(301, {'Location' => redirect_url} ) do |response| set_cookie(response) set_p3p_header(response) log("Redirecting to Trade Tracker with cookie: #{URI.encode(cookie.value)}") end end
redirect_to_root()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 52 def redirect_to_root response(302, {'Location' => request.base_url} ) do log("Redirecting to root as Trade Tracker parameters missing", :error) end end
redirect_url()
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 66 def redirect_url url = URI(TRACKBACK_URL) params = PARAMS_MAP.keys.each_with_object({}) { |param, result| result[PARAMS_MAP[param]] = params_hash[param] } url.query = params.map { |k,v| "#{k}=#{URI.encode(v)}" }.join('&') url.to_s end
response(status, header) { |response| ... }
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 73 def response(status, header) Rack::Response.new([], status, header).tap do |response| yield response if block_given? end.finish end
set_p3p_header(response)
click to toggle source
# File lib/rack/trade_tracker/handler.rb, line 84 def set_p3p_header(response) response.headers['P3P'] = 'CP="ALL PUR DSP CUR ADMi DEVi CONi OUR COR IND"' end