class Quovo::Token
Constants
- SPLITTER
- STORAGE_KEY
Attributes
password[R]
prefix[R]
storage[R]
ttl[R]
username[R]
Public Class Methods
new(storage: Quovo.config.token_storage, ttl: Quovo.config.token_ttl, prefix: Quovo.config.token_prefix, username: Quovo.config.username, password: Quovo.config.password)
click to toggle source
# File lib/quovo/token.rb, line 6 def initialize(storage: Quovo.config.token_storage, ttl: Quovo.config.token_ttl, prefix: Quovo.config.token_prefix, username: Quovo.config.username, password: Quovo.config.password) @storage = storage @ttl = ttl @prefix = prefix @username = username @password = password @token = nil @expires = nil end
Public Instance Methods
generate()
click to toggle source
# File lib/quovo/token.rb, line 25 def generate params = { name: [prefix, expires_from_now, salt].join('---'), expires: expires_from_now } payload = request(:post, '/tokens', params, :json) do |req| req.basic_auth(username, password) end.fetch('access_token') [payload.fetch('token'), payload.fetch('expires').to_time.utc] end
get()
click to toggle source
# File lib/quovo/token.rb, line 16 def get token, expires = read_cache if token.nil? || expires < now token, expires = generate write_cache(token, expires) end token end
Private Instance Methods
expires_from_now()
click to toggle source
# File lib/quovo/token.rb, line 51 def expires_from_now (now + ttl).iso8601 end
now()
click to toggle source
# File lib/quovo/token.rb, line 47 def now Time.now.utc end
read_cache()
click to toggle source
# File lib/quovo/token.rb, line 55 def read_cache return @token, @expires if @token && @expires token, expires = (storage.read(STORAGE_KEY) || '').split(SPLITTER) return nil unless expires @token = token @expires = expires.to_time.utc [@token, @expires] end
salt()
click to toggle source
# File lib/quovo/token.rb, line 43 def salt ('a'..'z').to_a.sample(10).join end
write_cache(token, expires)
click to toggle source
# File lib/quovo/token.rb, line 64 def write_cache(token, expires) storage.write(STORAGE_KEY, [token, expires.utc.iso8601].join(SPLITTER)) @token = token @expires = expires end