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