class FirebaseAuthRuby::PublicKeyFetcher

Public Class Methods

new() click to toggle source
# File lib/firebase_auth_ruby/public_key_fetcher.rb, line 13
def initialize
  @cache_hit = false
end

Public Instance Methods

fetch(url) click to toggle source
# File lib/firebase_auth_ruby/public_key_fetcher.rb, line 17
def fetch(url)
  @cache_hit = false

  public_keys = read(public_keys_cache_key(url))
  public_keys_expire_at = read(expire_at_cache_key(url))

  public_keys_still_valid = public_keys && public_keys_expire_at && Time.now.to_i < public_keys_expire_at.to_i

  if public_keys_still_valid
    @cache_hit = true
    return public_keys
  end

  res = Util.get!(url)

  cache_control_header = res['cache-control']
  if cache_control_header
    parts = cache_control_header.split(',')
    parts.each { |part|
      subpart = part.strip.split('=')
      if subpart[0] == 'max-age'
        max_age = subpart[1].to_i
        write(expire_at_cache_key(url), Time.now.to_i + (max_age * 1000))
      end
    }
  end

  public_keys = JSON.parse(res.body)
  write(public_keys_cache_key(url), public_keys)

  public_keys
end

Private Instance Methods

expire_at_cache_key(url) click to toggle source
# File lib/firebase_auth_ruby/public_key_fetcher.rb, line 56
def expire_at_cache_key(url)
  "firebase_auth_ruby/public_keys_expire_at/#{url}"
end
public_keys_cache_key(url) click to toggle source
# File lib/firebase_auth_ruby/public_key_fetcher.rb, line 52
def public_keys_cache_key(url)
  "firebase_auth_ruby/public_keys/#{url}"
end