Class: SchedulerZoomTokenRefreshWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Job
Defined in:
app/workers/scheduler_zoom_token_refresh_worker.rb

Overview

Proactively refreshes Zoom OAuth tokens before they expire.

Zoom access tokens expire after 1 hour. This worker runs every 45 minutes
and refreshes any Zoom token expiring within the next 30 minutes, ensuring
uninterrupted API access without relying solely on 401-driven refreshes.

Zoom refresh tokens expire after 90 days of non-use — this worker keeps
them warm so they never go stale.

Constant Summary collapse

REFRESH_WINDOW =
30.minutes

Instance Method Summary collapse

Instance Method Details

#performObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/workers/scheduler_zoom_token_refresh_worker.rb', line 19

def perform
  credentials = OauthCredential
                  .where(provider: Zoom::OauthService::PROVIDER)
                  .expiring_within(REFRESH_WINDOW)

  if credentials.none?
    Rails.logger.info('[SchedulerZoomTokenRefreshWorker] No Zoom tokens expiring soon — nothing to refresh')
    return
  end

  Rails.logger.info("[SchedulerZoomTokenRefreshWorker] Refreshing #{credentials.count} Zoom token(s)")

  credentials.find_each do |cred|
    refresh_credential(cred)
  end
end