ubertoken_fetcher.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef GOOGLE_APIS_GAIA_UBERTOKEN_FETCHER_H_ 6#define GOOGLE_APIS_GAIA_UBERTOKEN_FETCHER_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "google_apis/gaia/gaia_auth_consumer.h" 10#include "google_apis/gaia/oauth2_token_service.h" 11 12// Allow to retrieves an uber-auth token for the user. This class uses the 13// |OAuth2TokenService| and considers that the user is already logged in. It 14// will use the OAuth2 access token to generate the uber-auth token. 15// 16// This class should be used on a single thread, but it can be whichever thread 17// that you like. 18// 19// This class can handle one request at a time. 20 21class GaiaAuthFetcher; 22class GoogleServiceAuthError; 23 24namespace net { 25class URLRequestContextGetter; 26} 27 28// Callback for the |UbertokenFetcher| class. 29class UbertokenConsumer { 30 public: 31 UbertokenConsumer() {} 32 virtual ~UbertokenConsumer() {} 33 virtual void OnUbertokenSuccess(const std::string& token) {} 34 virtual void OnUbertokenFailure(const GoogleServiceAuthError& error) {} 35}; 36 37// Allows to retrieve an uber-auth token. 38class UbertokenFetcher : public GaiaAuthConsumer, 39 public OAuth2TokenService::Consumer { 40 public: 41 UbertokenFetcher(OAuth2TokenService* token_service, 42 UbertokenConsumer* consumer, 43 net::URLRequestContextGetter* request_context); 44 virtual ~UbertokenFetcher(); 45 46 // Start fetching the token for |account_id|. 47 virtual void StartFetchingToken(const std::string& account_id); 48 49 // Overriden from GaiaAuthConsumer 50 virtual void OnUberAuthTokenSuccess(const std::string& token) OVERRIDE; 51 virtual void OnUberAuthTokenFailure( 52 const GoogleServiceAuthError& error) OVERRIDE; 53 54 // Overriden from OAuth2TokenService::Consumer: 55 virtual void OnGetTokenSuccess(const OAuth2TokenService::Request* request, 56 const std::string& access_token, 57 const base::Time& expiration_time) OVERRIDE; 58 virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request, 59 const GoogleServiceAuthError& error) OVERRIDE; 60 61 private: 62 OAuth2TokenService* token_service_; 63 UbertokenConsumer* consumer_; 64 net::URLRequestContextGetter* request_context_; 65 scoped_ptr<GaiaAuthFetcher> gaia_auth_fetcher_; 66 scoped_ptr<OAuth2TokenService::Request> access_token_request_; 67 68 DISALLOW_COPY_AND_ASSIGN(UbertokenFetcher); 69}; 70 71#endif // GOOGLE_APIS_GAIA_UBERTOKEN_FETCHER_H_ 72