class Togl::Rack::Middleware
Constants
- SESSION_KEY
Public Class Methods
new(app)
click to toggle source
# File lib/togl/rack/middleware.rb, line 6 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/togl/rack/middleware.rb, line 10 def call(env) Thread.current[:togl_session_features] = detect_feature_params(env) @app.call(env).tap do Thread.current[:togl_session_features] = nil end end
detect_feature_params(env)
click to toggle source
# File lib/togl/rack/middleware.rb, line 17 def detect_feature_params(env) params = ::Rack::Utils.parse_query(env["QUERY_STRING"]) session = env["rack.session"] session[SESSION_KEY] ||= {} { ["enable_feature", "enable_features"] => true, ["disable_feature", "disable_features"] => false, ["reset_feature", "reset_features"] => nil }.each do |keys, flag| keys.each do |key| feature_names(params, key).each do |feature| session[SESSION_KEY][feature] = flag end end end session[SESSION_KEY] end
feature_names(params, key)
click to toggle source
# File lib/togl/rack/middleware.rb, line 33 def feature_names(params, key) params.fetch(key, "").split(",").map(&:strip) end