Class: Lita::Adapters::Discord::TokenCache
- Inherits:
-
Object
- Object
- Lita::Adapters::Discord::TokenCache
- Defined in:
- lib/lita/adapters/discord/token_cache.rb
Instance Method Summary collapse
-
#initialize ⇒ TokenCache
constructor
A new instance of TokenCache.
- #store_token(email, password, token) ⇒ Object
- #token(email, password) ⇒ Object
- #write_cache ⇒ Object
Constructor Details
#initialize ⇒ TokenCache
Returns a new instance of TokenCache.
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/lita/adapters/discord/token_cache.rb', line 81 def initialize if File.file? CACHE_PATH @data = JSON.parse(File.read(CACHE_PATH)) else Lita.logger.debug("Cache file #{CACHE_PATH} not found. Using empty cache") @data = {} end rescue => e Lita.logger.debug('Exception occurred while parsing token cache file:') # I guess start here if stuff is super broken Lita.logger.debug('Continuing with empty cache') @data = {} end |
Instance Method Details
#store_token(email, password, token) ⇒ Object
124 125 126 127 128 129 130 |
# File 'lib/lita/adapters/discord/token_cache.rb', line 124 def store_token(email, password, token) cached = CachedToken.new cached.generate_verify_hash(password) cached.encrypt_token(password, token) @data[email] = cached.data write_cache end |
#token(email, password) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/lita/adapters/discord/token_cache.rb', line 95 def token(email, password) if @data[email] begin cached = CachedToken.new(@data[email]) if cached.verify_password(password) token = cached.decrypt_token(password) if token begin cached.test_token token rescue => e fail_token('Token cached, verified and decrypted, but rejected by Discord', email) sleep 1 nil end else fail_token('Token cached and verified, but decryption failed', email) end else fail_token('Token verification failed', email) end rescue => e fail_token('Token cached but invalid', email) end else fail_token('Token not cached at all') end end |
#write_cache ⇒ Object
132 133 134 |
# File 'lib/lita/adapters/discord/token_cache.rb', line 132 def write_cache File.write(CACHE_PATH, @data.to_json) end |