class AzureBlob::IdentityToken
def refresh
def refresh return unless expired? headers = { "Metadata" => "true" } headers["X-IDENTITY-HEADER"] = ENV["IDENTITY_HEADER"] if ENV["IDENTITY_HEADER"] attempt = 0 begin attempt += 1 response = JSON.parse(AzureBlob::Http.new(identity_uri, headers).get) rescue AzureBlob::Http::Error => error if should_retry?(error, attempt) attempt = 1 if error.status == 410 delay = exponential_backoff(error, attempt) Kernel.sleep(delay) retry end raise end @token = response["access_token"] @expiration = Time.at(response["expires_on"].to_i) end