• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_OAUTH2_ACCESS_TOKEN_FETCHER_H_
6 #define GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_FETCHER_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "google_apis/gaia/oauth2_access_token_consumer.h"
12 #include "net/url_request/url_fetcher_delegate.h"
13 
14 class OAuth2AccessTokenConsumer;
15 
16 // Interface of a OAuth2 access token fetcher.
17 //
18 // Usage:
19 // * Create an instance with a consumer.
20 // * Call Start()
21 // * The consumer passed in the constructor will be called on the same
22 //   thread Start was called with the results.
23 //
24 // This class can handle one request at a time. To parallelize requests,
25 // create multiple instances.
26 class OAuth2AccessTokenFetcher {
27  public:
28   explicit OAuth2AccessTokenFetcher(OAuth2AccessTokenConsumer* consumer);
29   virtual ~OAuth2AccessTokenFetcher();
30 
31   // Starts the flow with the given parameters.
32   // |scopes| can be empty. If it is empty then the access token will have the
33   // same scope as the refresh token. If not empty, then access token will have
34   // the scopes specified. In this case, the access token will successfully be
35   // generated only if refresh token has login scope of a list of scopes that is
36   // a super-set of the specified scopes.
37   virtual void Start(const std::string& client_id,
38                      const std::string& client_secret,
39                      const std::vector<std::string>& scopes) = 0;
40 
41   // Cancels the current request and informs the consumer.
42   virtual void CancelRequest() = 0;
43 
44  protected:
45   // Fires |OnGetTokenSuccess| on |consumer_|.
46   void FireOnGetTokenSuccess(const std::string& access_token,
47                              const base::Time& expiration_time);
48 
49   // Fires |OnGetTokenFailure| on |consumer_|.
50   void FireOnGetTokenFailure(const GoogleServiceAuthError& error);
51 
52  private:
53   OAuth2AccessTokenConsumer* const consumer_;
54 
55   DISALLOW_COPY_AND_ASSIGN(OAuth2AccessTokenFetcher);
56 };
57 
58 #endif  // GOOGLE_APIS_GAIA_OAUTH2_ACCESS_TOKEN_FETCHER_H_
59