Class: BetterAuth::SessionStore
- Inherits:
-
Object
- Object
- BetterAuth::SessionStore
- Defined in:
- lib/better_auth/session_store.rb
Defined Under Namespace
Classes: CookieValue
Constant Summary collapse
- ALLOWED_COOKIE_SIZE =
4096- ESTIMATED_EMPTY_COOKIE_SIZE =
200- CHUNK_SIZE =
ALLOWED_COOKIE_SIZE - ESTIMATED_EMPTY_COOKIE_SIZE
Instance Attribute Summary collapse
-
#chunks ⇒ Object
readonly
Returns the value of attribute chunks.
-
#context ⇒ Object
readonly
Returns the value of attribute context.
-
#cookie_name ⇒ Object
readonly
Returns the value of attribute cookie_name.
-
#cookie_options ⇒ Object
readonly
Returns the value of attribute cookie_options.
Class Method Summary collapse
- .chunk_index(cookie_name) ⇒ Object
- .get_chunked_cookie(context, cookie_name) ⇒ Object
- .join_chunks(chunks) ⇒ Object
Instance Method Summary collapse
- #chunk(value, options = {}) ⇒ Object
- #chunks? ⇒ Boolean
- #clean ⇒ Object
-
#initialize(cookie_name, cookie_options, context) ⇒ SessionStore
constructor
A new instance of SessionStore.
- #set_cookies(cookies) ⇒ Object
- #value ⇒ Object
Constructor Details
#initialize(cookie_name, cookie_options, context) ⇒ SessionStore
Returns a new instance of SessionStore.
13 14 15 16 17 18 |
# File 'lib/better_auth/session_store.rb', line 13 def initialize(, , context) @cookie_name = @cookie_options = || {} @context = context @chunks = read_existing_chunks end |
Instance Attribute Details
#chunks ⇒ Object (readonly)
Returns the value of attribute chunks.
11 12 13 |
# File 'lib/better_auth/session_store.rb', line 11 def chunks @chunks end |
#context ⇒ Object (readonly)
Returns the value of attribute context.
11 12 13 |
# File 'lib/better_auth/session_store.rb', line 11 def context @context end |
#cookie_name ⇒ Object (readonly)
Returns the value of attribute cookie_name.
11 12 13 |
# File 'lib/better_auth/session_store.rb', line 11 def @cookie_name end |
#cookie_options ⇒ Object (readonly)
Returns the value of attribute cookie_options.
11 12 13 |
# File 'lib/better_auth/session_store.rb', line 11 def @cookie_options end |
Class Method Details
.chunk_index(cookie_name) ⇒ Object
64 65 66 67 68 |
# File 'lib/better_auth/session_store.rb', line 64 def self.chunk_index() Integer(.split(".").last) rescue ArgumentError, TypeError 0 end |
.get_chunked_cookie(context, cookie_name) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/better_auth/session_store.rb', line 48 def self.(context, ) direct = context.() return direct if direct && !direct.empty? chunks = context..each_with_object({}) do |(name, value), result| result[name] = value if name.start_with?("#{}.") end return nil if chunks.empty? join_chunks(chunks) end |
.join_chunks(chunks) ⇒ Object
60 61 62 |
# File 'lib/better_auth/session_store.rb', line 60 def self.join_chunks(chunks) chunks.keys.sort_by { |name| chunk_index(name) }.map { |name| chunks[name] }.join end |
Instance Method Details
#chunk(value, options = {}) ⇒ Object
28 29 30 31 32 |
# File 'lib/better_auth/session_store.rb', line 28 def chunk(value, = {}) cleaned = clean new_chunks = build_chunks(value.to_s, .merge( || {})) cleaned + new_chunks end |
#chunks? ⇒ Boolean
24 25 26 |
# File 'lib/better_auth/session_store.rb', line 24 def chunks? !chunks.empty? end |
#clean ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/better_auth/session_store.rb', line 34 def clean existing = chunks.keys.map do |name| CookieValue.new(name: name, value: "", attributes: .merge(max_age: 0)) end chunks.clear existing end |
#set_cookies(cookies) ⇒ Object
42 43 44 45 46 |
# File 'lib/better_auth/session_store.rb', line 42 def () .each do || context.(.name, .value, .attributes) end end |
#value ⇒ Object
20 21 22 |
# File 'lib/better_auth/session_store.rb', line 20 def value self.class.join_chunks(chunks) end |