Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Side by Side Diff: components/proximity_auth/cryptauth/cryptauth_client_impl.h

Issue 2502343003: Moved //components/proximity_auth/cryptauth to //components/cryptauth. (Closed)
Patch Set: Fixed proto #includes. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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_CLIENT_IMPL_H
6 #define COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CLIENT_IMPL_H
7
8 #include "base/macros.h"
9 #include "base/memory/weak_ptr.h"
10 #include "components/proximity_auth/cryptauth/cryptauth_access_token_fetcher.h"
11 #include "components/proximity_auth/cryptauth/cryptauth_api_call_flow.h"
12 #include "components/proximity_auth/cryptauth/cryptauth_client.h"
13 #include "components/proximity_auth/cryptauth/proto/cryptauth_api.pb.h"
14 #include "net/url_request/url_request_context_getter.h"
15
16 class OAuth2TokenService;
17
18 namespace proximity_auth {
19
20 // Implementation of CryptAuthClient.
21 // Note: There is no need to set the |device_classifier| field in request
22 // messages. CryptAuthClient will fill this field for all requests.
23 class CryptAuthClientImpl : public CryptAuthClient {
24 public:
25 typedef base::Callback<void(const std::string&)> ErrorCallback;
26
27 // Creates the client using |url_request_context| to make the HTTP request
28 // through |api_call_flow|. CryptAuthClientImpl takes ownership of
29 // |access_token_fetcher|, which provides the access token authorizing
30 // CryptAuth requests. The |device_classifier| argument contains basic device
31 // information of the caller (e.g. version and device type).
32 CryptAuthClientImpl(
33 std::unique_ptr<CryptAuthApiCallFlow> api_call_flow,
34 std::unique_ptr<CryptAuthAccessTokenFetcher> access_token_fetcher,
35 scoped_refptr<net::URLRequestContextGetter> url_request_context,
36 const cryptauth::DeviceClassifier& device_classifier);
37 ~CryptAuthClientImpl() override;
38
39 // CryptAuthClient:
40 void GetMyDevices(const cryptauth::GetMyDevicesRequest& request,
41 const GetMyDevicesCallback& callback,
42 const ErrorCallback& error_callback) override;
43 void FindEligibleUnlockDevices(
44 const cryptauth::FindEligibleUnlockDevicesRequest& request,
45 const FindEligibleUnlockDevicesCallback& callback,
46 const ErrorCallback& error_callback) override;
47 void SendDeviceSyncTickle(
48 const cryptauth::SendDeviceSyncTickleRequest& request,
49 const SendDeviceSyncTickleCallback& callback,
50 const ErrorCallback& error_callback) override;
51 void ToggleEasyUnlock(const cryptauth::ToggleEasyUnlockRequest& request,
52 const ToggleEasyUnlockCallback& callback,
53 const ErrorCallback& error_callback) override;
54 void SetupEnrollment(const cryptauth::SetupEnrollmentRequest& request,
55 const SetupEnrollmentCallback& callback,
56 const ErrorCallback& error_callback) override;
57 void FinishEnrollment(const cryptauth::FinishEnrollmentRequest& request,
58 const FinishEnrollmentCallback& callback,
59 const ErrorCallback& error_callback) override;
60 std::string GetAccessTokenUsed() override;
61
62 private:
63 // Starts a call to the API given by |request_path|, with the templated
64 // request and response types. The client first fetches the access token and
65 // then makes the HTTP request.
66 template <class RequestProto, class ResponseProto>
67 void MakeApiCall(
68 const std::string& request_path,
69 const RequestProto& request_proto,
70 const base::Callback<void(const ResponseProto&)>& response_callback,
71 const ErrorCallback& error_callback);
72
73 // Called when the access token is obtained so the API request can be made.
74 template <class ResponseProto>
75 void OnAccessTokenFetched(
76 const std::string& serialized_request,
77 const base::Callback<void(const ResponseProto&)>& response_callback,
78 const std::string& access_token);
79
80 // Called with CryptAuthApiCallFlow completes successfully to deserialize and
81 // return the result.
82 template <class ResponseProto>
83 void OnFlowSuccess(
84 const base::Callback<void(const ResponseProto&)>& result_callback,
85 const std::string& serialized_response);
86
87 // Called when the current API call fails at any step.
88 void OnApiCallFailed(const std::string& error_message);
89
90 // Constructs and executes the actual HTTP request.
91 std::unique_ptr<CryptAuthApiCallFlow> api_call_flow_;
92
93 // Fetches the access token authorizing the API calls.
94 std::unique_ptr<CryptAuthAccessTokenFetcher> access_token_fetcher_;
95
96 // The context for network requests.
97 scoped_refptr<net::URLRequestContextGetter> url_request_context_;
98
99 // Contains basic device info of the client making the request that is sent to
100 // CryptAuth with each API call.
101 const cryptauth::DeviceClassifier device_classifier_;
102
103 // True if an API call has been started. Remains true even after the API call
104 // completes.
105 bool has_call_started_;
106
107 // URL path of the current request.
108 std::string request_path_;
109
110 // The access token fetched by |access_token_fetcher_|.
111 std::string access_token_used_;
112
113 // Called when the current request fails.
114 ErrorCallback error_callback_;
115
116 base::WeakPtrFactory<CryptAuthClientImpl> weak_ptr_factory_;
117
118 DISALLOW_COPY_AND_ASSIGN(CryptAuthClientImpl);
119 };
120
121 // Implementation of CryptAuthClientFactory.
122 class CryptAuthClientFactoryImpl : public CryptAuthClientFactory {
123 public:
124 // |token_service|: Gets the user's access token.
125 // Not owned, so |token_service| needs to outlive this object.
126 // |account_id|: The account id of the user.
127 // |url_request_context|: The request context to make the HTTP requests.
128 // |device_classifier|: Contains basic device information of the client.
129 CryptAuthClientFactoryImpl(
130 OAuth2TokenService* token_service,
131 const std::string& account_id,
132 scoped_refptr<net::URLRequestContextGetter> url_request_context,
133 const cryptauth::DeviceClassifier& device_classifier);
134 ~CryptAuthClientFactoryImpl() override;
135
136 // CryptAuthClientFactory:
137 std::unique_ptr<CryptAuthClient> CreateInstance() override;
138
139 private:
140 OAuth2TokenService* token_service_;
141 const std::string account_id_;
142 const scoped_refptr<net::URLRequestContextGetter> url_request_context_;
143 const cryptauth::DeviceClassifier device_classifier_;
144
145 DISALLOW_COPY_AND_ASSIGN(CryptAuthClientFactoryImpl);
146 };
147
148 } // namespace proximity_auth
149
150 #endif // COMPONENTS_PROXIMITY_AUTH_CRYPTAUTH_CLIENT_IMPL_H
OLDNEW
« no previous file with comments | « components/proximity_auth/cryptauth/cryptauth_client.h ('k') | components/proximity_auth/cryptauth/cryptauth_client_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698