Class: BasecampTokenRefreshWorker
- Inherits:
-
Object
- Object
- BasecampTokenRefreshWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/basecamp_token_refresh_worker.rb
Overview
Proactively refreshes Basecamp OAuth tokens before they expire.
Basecamp tokens expire after 2 weeks. This worker runs daily and
refreshes any token expiring within the next 3 days, ensuring
uninterrupted API access without relying on 401-driven refreshes.
Each OauthCredential is scoped to an Account, so every user's
token is refreshed independently.
Constant Summary collapse
- REFRESH_WINDOW =
3.days
Instance Method Summary collapse
Instance Method Details
#perform ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/workers/basecamp_token_refresh_worker.rb', line 19 def perform credentials = OauthCredential .where(provider: Basecamp::OauthService::PROVIDER) .expiring_within(REFRESH_WINDOW) if credentials.none? Rails.logger.info('[BasecampTokenRefreshWorker] No tokens expiring soon — nothing to refresh') return end Rails.logger.info("[BasecampTokenRefreshWorker] Refreshing #{credentials.count} Basecamp token(s)") credentials.find_each do |cred| refresh_credential(cred) end end |