Class: YouTubeTokenRefreshWorker

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

Overview

Proactively refreshes the system-level YouTube OAuth token before it expires.

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

Constant Summary collapse

REFRESH_WINDOW =
30.minutes

Instance Method Summary collapse

Instance Method Details

#performObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/workers/youtube_token_refresh_worker.rb', line 16

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

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

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

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