| OLD | NEW |
| (Empty) |
| 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 COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_API_CALL_FLOW_H | |
| 6 #define COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_API_CALL_FLOW_H | |
| 7 | |
| 8 #include <string> | |
| 9 | |
| 10 #include "base/callback.h" | |
| 11 #include "base/macros.h" | |
| 12 #include "google_apis/gaia/oauth2_api_call_flow.h" | |
| 13 | |
| 14 namespace proximity_auth { | |
| 15 | |
| 16 // Google API call flow implementation underlying all CryptAuth API calls. | |
| 17 // CryptAuth is a Google service that manages authorization and cryptographic | |
| 18 // credentials for users' devices (eg. public keys). | |
| 19 class CryptAuthApiCallFlow : public OAuth2ApiCallFlow { | |
| 20 public: | |
| 21 typedef base::Callback<void(const std::string& serialized_response)> | |
| 22 ResultCallback; | |
| 23 typedef base::Callback<void(const std::string& error_message)> ErrorCallback; | |
| 24 | |
| 25 CryptAuthApiCallFlow(); | |
| 26 ~CryptAuthApiCallFlow() override; | |
| 27 | |
| 28 // Starts the API call. | |
| 29 // request_url: The URL endpoint of the API request. | |
| 30 // context: The URL context used to make the request. | |
| 31 // access_token: The access token for whom to make the to make the request. | |
| 32 // serialized_request: A serialized proto containing the request data. | |
| 33 // result_callback: Called when the flow completes successfully with a | |
| 34 // serialized response proto. | |
| 35 // error_callback: Called when the flow completes with an error. | |
| 36 virtual void Start(const GURL& request_url, | |
| 37 net::URLRequestContextGetter* context, | |
| 38 const std::string& access_token, | |
| 39 const std::string& serialized_request, | |
| 40 const ResultCallback& result_callback, | |
| 41 const ErrorCallback& error_callback); | |
| 42 | |
| 43 protected: | |
| 44 // Reduce the visibility of OAuth2ApiCallFlow::Start() to avoid exposing | |
| 45 // overloaded methods. | |
| 46 using OAuth2ApiCallFlow::Start; | |
| 47 | |
| 48 // google_apis::OAuth2ApiCallFlow: | |
| 49 GURL CreateApiCallUrl() override; | |
| 50 std::string CreateApiCallBody() override; | |
| 51 std::string CreateApiCallBodyContentType() override; | |
| 52 net::URLFetcher::RequestType GetRequestTypeForBody( | |
| 53 const std::string& body) override; | |
| 54 void ProcessApiCallSuccess(const net::URLFetcher* source) override; | |
| 55 void ProcessApiCallFailure(const net::URLFetcher* source) override; | |
| 56 | |
| 57 private: | |
| 58 // The URL of the CryptAuth endpoint serving the request. | |
| 59 GURL request_url_; | |
| 60 | |
| 61 // Serialized request message proto that will be sent in the API request. | |
| 62 std::string serialized_request_; | |
| 63 | |
| 64 // Callback invoked with the serialized response message proto when the flow | |
| 65 // completes successfully. | |
| 66 ResultCallback result_callback_; | |
| 67 | |
| 68 // Callback invoked with an error message when the flow fails. | |
| 69 ErrorCallback error_callback_; | |
| 70 | |
| 71 DISALLOW_COPY_AND_ASSIGN(CryptAuthApiCallFlow); | |
| 72 }; | |
| 73 | |
| 74 } // namespace proximity_auth | |
| 75 | |
| 76 #endif // COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_API_CALL_FLOW_H | |
| OLD | NEW |