blob: 53e2f398d4522b442493cae39cdd29eb43763ecb [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_CONSUMER_H_
#define GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_CONSUMER_H_
#include <string>
#include "base/macros.h"
#include "base/time/time.h"
class GoogleServiceAuthError;
// An interface that defines the callbacks for consumers to which
// OAuth2AccessTokenFetcher can return results.
class OAuth2AccessTokenConsumer {
public:
// Structure representing information contained in OAuth2 access token.
struct TokenResponse {
TokenResponse();
TokenResponse(const TokenResponse& response);
TokenResponse(TokenResponse&& response);
~TokenResponse();
TokenResponse& operator=(const TokenResponse& response);
TokenResponse& operator=(TokenResponse&& response);
// OAuth2 access token.
std::string access_token;
// OAuth2 refresh token. May be empty.
std::string refresh_token;
// The date until which the |access_token| can be used.
// This value has a built-in safety margin, so it can be used as-is.
base::Time expiration_time;
// Contains extra information regarding the user's currently registered
// services.
std::string id_token;
// Helper class to make building TokenResponse objects clearer.
class Builder {
public:
Builder();
~Builder();
Builder& WithAccessToken(const std::string& token);
Builder& WithRefreshToken(const std::string& token);
Builder& WithExpirationTime(const base::Time& time);
Builder& WithIdToken(const std::string& token);
TokenResponse build();
private:
std::string access_token_;
std::string refresh_token_;
base::Time expiration_time_;
std::string id_token_;
};
private:
friend class Builder;
friend class OAuth2AccessTokenConsumer;
TokenResponse(const std::string& access_token,
const std::string& refresh_token,
const base::Time& expiration_time,
const std::string& id_token);
};
OAuth2AccessTokenConsumer() = default;
virtual ~OAuth2AccessTokenConsumer();
// Success callback.
virtual void OnGetTokenSuccess(const TokenResponse& token_response);
// Failure callback.
virtual void OnGetTokenFailure(const GoogleServiceAuthError& error);
// Returns the OAuth token consumer name, should be used for logging only.
virtual std::string GetConsumerName() const = 0;
private:
DISALLOW_COPY_AND_ASSIGN(OAuth2AccessTokenConsumer);
};
#endif // GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_CONSUMER_H_