Class: Clerk::JWKSCache
- Inherits:
-
Object
- Object
- Clerk::JWKSCache
- Defined in:
- lib/clerk/jwks_cache.rb
Instance Method Summary collapse
- #fetch(sdk, force_refresh: false, kid_not_found: false) ⇒ Object
-
#initialize(lifetime) ⇒ JWKSCache
constructor
A new instance of JWKSCache.
Constructor Details
#initialize(lifetime) ⇒ JWKSCache
Returns a new instance of JWKSCache.
5 6 7 8 9 10 |
# File 'lib/clerk/jwks_cache.rb', line 5 def initialize(lifetime) @lifetime = lifetime @jwks = nil @last_update = nil @lock = Concurrent::ReadWriteLock.new end |
Instance Method Details
#fetch(sdk, force_refresh: false, kid_not_found: false) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/clerk/jwks_cache.rb', line 12 def fetch(sdk, force_refresh: false, kid_not_found: false) should_refresh = @lock.with_read_lock do now = Time.now.to_i @jwks.nil? || @last_update.nil? || force_refresh || (now - @last_update > @lifetime) || (kid_not_found && now - @last_update > 300) end if should_refresh @lock.with_write_lock do @last_update = Time.now.to_i @jwks = begin sdk.jwks.get_jwks.keys.map(&:to_hash) rescue Clerk::Error, ClerkHttpClient::ApiError nil end end end @lock.with_read_lock do @jwks end end |