Class: Togl::Rack::Middleware
- Inherits:
-
Object
- Object
- Togl::Rack::Middleware
- Defined in:
- lib/togl/rack/middleware.rb
Constant Summary collapse
- SESSION_KEY =
'togl.features'
Instance Method Summary collapse
- #call(env) ⇒ Object
- #detect_feature_params(env) ⇒ Object
- #feature_names(params, key) ⇒ Object
-
#initialize(app) ⇒ Middleware
constructor
A new instance of Middleware.
Constructor Details
#initialize(app) ⇒ Middleware
Returns a new instance of Middleware.
6 7 8 |
# File 'lib/togl/rack/middleware.rb', line 6 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
10 11 12 13 14 15 |
# 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) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# 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) ⇒ Object
33 34 35 |
# File 'lib/togl/rack/middleware.rb', line 33 def feature_names(params, key) params.fetch(key, "").split(",").map(&:strip) end |