Class: Zaikio::JWTAuth::DirectoryCache
- Inherits:
-
Object
- Object
- Zaikio::JWTAuth::DirectoryCache
- Defined in:
- lib/zaikio/jwt_auth/directory_cache.rb
Defined Under Namespace
Classes: UpdateJob
Constant Summary collapse
- BadResponseError =
Class.new(StandardError)
Class Method Summary collapse
-
.fetch(directory_path, options = {}) ⇒ Object
Retrieve some data from the Hub, reachable at
directory_path. - .reset(directory_path) ⇒ Object
- .update(directory_path, options = {}) ⇒ Object
Class Method Details
.fetch(directory_path, options = {}) ⇒ Object
Retrieve some data from the Hub, reachable at directory_path. Attempts to
retrieve data from a cache first (usually Redis, if configured). Caching can be
skipped by setting an :invalidate option, or if the cached data is stale it
will be refetched from the Hub anyway. Please note that this method can return
nil if there is no cache available and the Hub is giving error responses or
failures.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/zaikio/jwt_auth/directory_cache.rb', line 31 def fetch(directory_path, = {}) cache = begin Zaikio::JWTAuth.configuration.cache.read("zaikio::jwt_auth::#{directory_path}") rescue StandardError => e Zaikio::JWTAuth.configuration.logger .warn("Error reading DirectoryCache(#{directory_path}) from Cache, falling "\ "back to API: #{e.inspect}") nil end return reload_or_enqueue(directory_path) unless cache json = Oj.load(cache) if [:invalidate] || cache_expired?(json, [:expires_after]) reload_or_enqueue(directory_path) end || json["data"] end |
.reset(directory_path) ⇒ Object
59 60 61 |
# File 'lib/zaikio/jwt_auth/directory_cache.rb', line 59 def reset(directory_path) Zaikio::JWTAuth.configuration.cache.delete("zaikio::jwt_auth::#{directory_path}") end |
.update(directory_path, options = {}) ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/zaikio/jwt_auth/directory_cache.rb', line 50 def update(directory_path, = {}) data = fetch(directory_path, ) data = yield(data) Zaikio::JWTAuth.configuration.cache.write("zaikio::jwt_auth::#{directory_path}", { fetched_at: Time.now.to_i, data: data }.to_json) end |