// 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 #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; OAuth2AccessTokenConsumer(const OAuth2AccessTokenConsumer&) = delete; OAuth2AccessTokenConsumer& operator=(const OAuth2AccessTokenConsumer&) = delete; 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; }; #endif // GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_CONSUMER_H_