Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / components / proximity_auth / cryptauth / cryptauth_api_call_flow.h
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(const GURL& request_url);
26   ~CryptAuthApiCallFlow() override;
27
28   // Starts the API call.
29   //   context: The URL context used to make the request.
30   //   access_token: The access token for whom to make the to make the request.
31   //   serialized_request: A serialized proto containing the request data.
32   //   result_callback: Called when the flow completes successfully with a
33   //       serialized response proto.
34   //   error_callback: Called when the flow completes with an error.
35   void Start(net::URLRequestContextGetter* context,
36              const std::string& access_token,
37              const std::string& serialized_request,
38              ResultCallback result_callback,
39              ErrorCallback error_callback);
40
41  protected:
42   // Reduce the visibility of OAuth2ApiCallFlow::Start() to avoid exposing
43   // overloaded methods.
44   using OAuth2ApiCallFlow::Start;
45
46   // google_apis::OAuth2ApiCallFlow:
47   GURL CreateApiCallUrl() override;
48   std::string CreateApiCallBody() override;
49   std::string CreateApiCallBodyContentType() override;
50   void ProcessApiCallSuccess(const net::URLFetcher* source) override;
51   void ProcessApiCallFailure(const net::URLFetcher* source) override;
52
53  private:
54   // The URL of the CryptAuth endpoint serving the request.
55   const GURL request_url_;
56
57   // Serialized request message proto that will be sent in the API request.
58   std::string serialized_request_;
59
60   // Callback invoked with the serialized response message proto when the flow
61   // completes successfully.
62   ResultCallback result_callback_;
63
64   // Callback invoked with an error message when the flow fails.
65   ErrorCallback error_callback_;
66
67   DISALLOW_COPY_AND_ASSIGN(CryptAuthApiCallFlow);
68 };
69
70 }  // namespace proximity_auth
71
72 #endif  // COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_API_CALL_FLOW_H