Class: Landline::Session::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/landline/extensions/session.rb

Overview

Class for representing session storage

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cookie, cookies_callback) ⇒ Session

Returns a new instance of Session.



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/landline/extensions/session.rb', line 31

def initialize(cookie, cookies_callback)
  @data = if cookie
            Landline::Util::JWT.from_string(
              cookie,
              Landline::Session.hmac_secret
            )
          else
            Landline::Util::JWT.new({})
          end
  @valid = !@data.nil?
  @cookies_callback = cookies_callback
end

Instance Attribute Details

#validObject (readonly)

Returns the value of attribute valid.



70
71
72
# File 'lib/landline/extensions/session.rb', line 70

def valid
  @valid
end

Instance Method Details

#[](key) ⇒ Object

Retrieve data from session storage

Parameters:

  • key (String, Symbol)

    serializable key

Raises:



46
47
48
49
50
51
52
53
54
# File 'lib/landline/extensions/session.rb', line 46

def [](key)
  raise Landline::Session::SessionError, "session not valid" unless @valid

  unless key.is_a? String or key.is_a? Symbol
    raise StandardError, "key not serializable"
  end

  @data.data[key]
end

#[]=(key, value) ⇒ Object

Set data to session storage

Parameters:

  • key (String, Symbol)

    serializable key

  • value (Object)

    serializable data

Raises:



59
60
61
62
63
64
65
66
67
68
# File 'lib/landline/extensions/session.rb', line 59

def []=(key, value)
  raise Landline::Session::SessionError, "session not valid" unless @valid

  unless key.is_a? String or key.is_a? Symbol
    raise StandardError, "key not serializable"
  end

  @data.data[key] = value
  @cookies_callback.call(@data.make(Landline::Session.hmac_secret))
end