class AzureBlob::IdentityToken

def refresh

def refresh
  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