Module: GlobalSession::Session
- Defined in:
- lib/global_session/session.rb,
lib/global_session/session.rb,
lib/global_session/session/v1.rb,
lib/global_session/session/v2.rb,
lib/global_session/session/v3.rb,
lib/global_session/session/abstract.rb
Overview
Ladies and gentlemen: the one and only, star of the show, GLOBAL SESSION!
Session is designed to act as much like a Hash as possible. You can use most of the methods you would use with Hash: [], has_key?, each, etc. It has a few additional methods that are specific to itself, mostly involving whether it’s expired, valid, supports a certain key, etc.
Global sessions are versioned, and each version may have its own encoding strategy. This module acts as a namespace for the different versions, each of which is represented by a class in the module. They all inherit from the abstract base class in order to ensure that they are internally compatible with other components of this gem.
This module also acts as a façade for reading global session cookies generated by the different versions; it is responsible for detecting the version of a given cookie, then instantiating a suitable session object.
Defined Under Namespace
Class Method Summary collapse
-
.decode_cookie(cookie) ⇒ Object
Decode a global session cookie without checking signature or expiration.
- .guess_version(cookie) ⇒ Object
-
.new(directory, cookie = nil, valid_signature_digest = nil) ⇒ Object
Decode a global session cookie.
Class Method Details
.decode_cookie(cookie) ⇒ Object
Decode a global session cookie without checking signature or expiration. Good for debugging.
29 30 31 |
# File 'lib/global_session/session.rb', line 29 def self.() guess_version().() end |
.guess_version(cookie) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/global_session/session.rb', line 39 def self.guess_version() case when /^WzM/ # == "[3" V3 when /^l9/ # == binary msgpack symbol for "beginning of array" V2 when /^eN/ # == zlib-compressed form of "{" V1 else V1 # due to zlib compression, there might be corner cases with the eN prefix end end |
.new(directory, cookie = nil, valid_signature_digest = nil) ⇒ Object
Decode a global session cookie. Use a heuristic to determine the version.
35 36 37 |
# File 'lib/global_session/session.rb', line 35 def self.new(directory, =nil, valid_signature_digest=nil) guess_version().new(directory, ) end |