class MultiSessionStore::SubsessionGeneratorMiddleware
Constants
- SUBSESSION_ID_HEADER
Public Class Methods
new(app, config = {})
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 5 def initialize(app, config = {}) @app = app @config = config end
Public Instance Methods
call(env)
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 10 def call(env) request = Rack::Request.new(env) set_subsession_id_from_header(request) generate_subsession_id_if_needed(request) @app.call(env) end
Private Instance Methods
excluded_paths()
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 41 def excluded_paths @config[:exclude_paths] ||= [] end
generate_subsession_id_if_needed(request)
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 25 def generate_subsession_id_if_needed(request) request.update_param 'subsession_id', new_subsession_id if subsession_id_is_needed?(request) end
new_subsession_id()
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 29 def new_subsession_id SecureRandom.hex end
path_excluded?(current_path)
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 37 def path_excluded?(current_path) excluded_paths.any? { |excluded_path| excluded_path.match? current_path } end
set_subsession_id_from_header(request)
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 21 def set_subsession_id_from_header(request) request.update_param 'subsession_id', request.get_header(SUBSESSION_ID_HEADER) if request.has_header?(SUBSESSION_ID_HEADER) end
subsession_id_is_needed?(request)
click to toggle source
# File lib/multi_session_store/subsession_generator_middleware.rb, line 33 def subsession_id_is_needed?(request) !request.params['subsession_id'] && !path_excluded?(request.path) end