Class: Tastytrade::SessionManager
- Inherits:
-
Object
- Object
- Tastytrade::SessionManager
- Defined in:
- lib/tastytrade/session_manager.rb
Overview
Manages session persistence and token storage
Constant Summary collapse
- SESSION_KEY_PREFIX =
"session"- TOKEN_KEY_PREFIX =
"token"- REMEMBER_KEY_PREFIX =
"remember"
Instance Attribute Summary collapse
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
-
#username ⇒ Object
readonly
Returns the value of attribute username.
Instance Method Summary collapse
-
#clear_session! ⇒ Object
Clear all stored session data.
-
#initialize(username:, environment: "production") ⇒ SessionManager
constructor
A new instance of SessionManager.
-
#load_session ⇒ Hash?
Load saved session if available.
-
#restore_session ⇒ Tastytrade::Session?
Create a new session from saved credentials.
-
#save_session(session, password: nil, remember: false) ⇒ Object
Save session data securely.
-
#saved_credentials? ⇒ Boolean
Check if we have stored credentials.
Constructor Details
#initialize(username:, environment: "production") ⇒ SessionManager
Returns a new instance of SessionManager.
16 17 18 19 |
# File 'lib/tastytrade/session_manager.rb', line 16 def initialize(username:, environment: "production") @username = username @environment = environment end |
Instance Attribute Details
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
14 15 16 |
# File 'lib/tastytrade/session_manager.rb', line 14 def environment @environment end |
#username ⇒ Object (readonly)
Returns the value of attribute username.
14 15 16 |
# File 'lib/tastytrade/session_manager.rb', line 14 def username @username end |
Instance Method Details
#clear_session! ⇒ Object
Clear all stored session data
94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/tastytrade/session_manager.rb', line 94 def clear_session! FileStore.delete(token_key) FileStore.delete(remember_token_key) FileStore.delete(password_key) FileStore.delete(session_expiration_key) config = CLIConfig.new config.delete("current_username") config.delete("last_login") true end |
#load_session ⇒ Hash?
Load saved session if available
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/tastytrade/session_manager.rb', line 56 def load_session token = load_token return nil unless token { session_token: token, remember_token: load_remember_token, user_data: load_user_data, session_expiration: load_session_expiration, username: username, environment: environment } end |
#restore_session ⇒ Tastytrade::Session?
Create a new session from saved credentials
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/tastytrade/session_manager.rb', line 73 def restore_session password = load_password remember_token = load_remember_token return nil unless password || remember_token session = Session.new( username: username, password: password, remember_token: remember_token, is_test: environment == "sandbox" ) session.login session rescue StandardError => e warn "Failed to restore session: #{e.}" nil end |
#save_session(session, password: nil, remember: false) ⇒ Object
Save session data securely
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/tastytrade/session_manager.rb', line 26 def save_session(session, password: nil, remember: false) # Always save the session token save_token(session.session_token) # Save session expiration if available save_session_expiration(session.session_expiration) if session.session_expiration # Save user data save_user_data(session.user) if session.user if remember && session.remember_token save_remember_token(session.remember_token) save_password(password) if password && FileStore.available? end # Save session metadata config = CLIConfig.new config.set("current_username", username) config.set("environment", environment) config.set("last_login", Time.now.to_s) true rescue StandardError => e warn "Failed to save session: #{e.}" false end |
#saved_credentials? ⇒ Boolean
Check if we have stored credentials
108 109 110 |
# File 'lib/tastytrade/session_manager.rb', line 108 def saved_credentials? !load_password.nil? || !load_remember_token.nil? end |