Sha256: 71cdff451841b6ceb196df82d12d38ca81edfe6c9a04e048d2ded627a6191c3e
Contents?: true
Size: 1.02 KB
Versions: 3
Compression:
Stored size: 1.02 KB
Contents
# frozen_string_literal: true module RDStation module RetryableRequest MAX_RETRIES = 1 def retryable_request(authorization) retries = 0 begin yield authorization rescue ::RDStation::Error::ExpiredAccessToken, ::RDStation::Error::Unauthorized => e raise if !retry_possible?(authorization) || retries >= MAX_RETRIES retries += 1 refresh_access_token(authorization) retry end end def retry_possible?(authorization) [ RDStation.configuration&.client_id, RDStation.configuration&.client_secret, authorization.refresh_token ].all? end def refresh_access_token(authorization) client = RDStation::Authentication.new response = client.update_access_token(authorization.refresh_token) authorization.access_token = response['access_token'] authorization.access_token_expires_in = response['expires_in'] RDStation.configuration&.access_token_refresh_callback&.call(authorization) end end end
Version data entries
3 entries across 3 versions & 1 rubygems