Class: Xolo::Admin::CookieJar
- Inherits:
-
Faraday::Middleware
- Object
- Faraday::Middleware
- Xolo::Admin::CookieJar
- Defined in:
- lib/xolo/admin/cookie_jar.rb
Overview
Faraday Middleware for storing and sending the only cookie we use with the Xolo server.
See lostisland.github.io/faraday/#/middleware/custom-middleware
Constant Summary collapse
- COOKIE_HEADER =
Constants
'Cookie'- SET_COOKIE_HEADER =
'set-cookie'- SESSION_COOKIE_NAME =
'rack.session'- SESSION_COOKIE_EXPIRES_NAME =
'expires'
Class Attribute Summary collapse
-
.session_cookie ⇒ Object
runtime storage for our single cookie.
-
.session_expires ⇒ Object
runtime storage for our single cookie.
Instance Method Summary collapse
-
#on_complete(env) ⇒ Object
The server only ever sends one cookie, and we only care about 2 values: rack.session, and expires.
-
#on_request(env) ⇒ Object
we only send back the rack.session cookie, as long as it exists and hasn’t expired (it lasts an hour).
Class Attribute Details
.session_cookie ⇒ Object
runtime storage for our single cookie
38 39 40 |
# File 'lib/xolo/admin/cookie_jar.rb', line 38 def @session_cookie end |
.session_expires ⇒ Object
runtime storage for our single cookie
38 39 40 |
# File 'lib/xolo/admin/cookie_jar.rb', line 38 def session_expires @session_expires end |
Instance Method Details
#on_complete(env) ⇒ Object
The server only ever sends one cookie, and we only care about 2 values: rack.session, and expires
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/xolo/admin/cookie_jar.rb', line 61 def on_complete(env) = env[:response_headers][SET_COOKIE_HEADER] return unless = .split(Xolo::SEMICOLON_SEP_RE) .each do |part| name, value = part.split('=') case name when SESSION_COOKIE_NAME self.class. = value when SESSION_COOKIE_EXPIRES_NAME self.class.session_expires = Time.parse(value).localtime end end end |
#on_request(env) ⇒ Object
we only send back the rack.session cookie, as long as it exists and hasn’t expired (it lasts an hour)
49 50 51 52 53 54 55 |
# File 'lib/xolo/admin/cookie_jar.rb', line 49 def on_request(env) return unless self.class. && self.class.session_expires raise Xolo::InvalidTokenError, 'Server Session Expired' if Time.now > self.class.session_expires env[:request_headers][COOKIE_HEADER] = "#{SESSION_COOKIE_NAME}=#{self.class.}" end |