// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_CRYPTAUTH_CRYPTAUTH_CLIENT_H_ #define COMPONENTS_CRYPTAUTH_CRYPTAUTH_CLIENT_H_ #include #include #include "base/callback_forward.h" #include "base/macros.h" #include "net/traffic_annotation/network_traffic_annotation.h" namespace cryptauth { class GetMyDevicesRequest; class GetMyDevicesResponse; class FindEligibleUnlockDevicesRequest; class FindEligibleUnlockDevicesResponse; class SendDeviceSyncTickleRequest; class SendDeviceSyncTickleResponse; class ToggleEasyUnlockRequest; class ToggleEasyUnlockResponse; class SetupEnrollmentRequest; class SetupEnrollmentResponse; class FinishEnrollmentRequest; class FinishEnrollmentResponse; class FindEligibleForPromotionRequest; class FindEligibleForPromotionResponse; } namespace cryptauth { // Interface for making API requests to the CryptAuth service, which // manages cryptographic credentials (ie. public keys) for a user's devices. // Implmentations shall only processes a single request, so create a new // instance for each request you make. DO NOT REUSE. // For documentation on each API call, see // components/cryptauth/proto/cryptauth_api.proto class CryptAuthClient { public: typedef base::Callback ErrorCallback; virtual ~CryptAuthClient() {} // GetMyDevices typedef base::Callback GetMyDevicesCallback; virtual void GetMyDevices(const GetMyDevicesRequest& request, const GetMyDevicesCallback& callback, const ErrorCallback& error_callback, const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) = 0; // FindEligibleUnlockDevices typedef base::Callback FindEligibleUnlockDevicesCallback; virtual void FindEligibleUnlockDevices( const FindEligibleUnlockDevicesRequest& request, const FindEligibleUnlockDevicesCallback& callback, const ErrorCallback& error_callback) = 0; // FindEligibleForPromotion typedef base::Callback FindEligibleForPromotionCallback; virtual void FindEligibleForPromotion( const FindEligibleForPromotionRequest& request, const FindEligibleForPromotionCallback& callback, const ErrorCallback& error_callback) = 0; // SendDeviceSyncTickle typedef base::Callback SendDeviceSyncTickleCallback; virtual void SendDeviceSyncTickle( const SendDeviceSyncTickleRequest& request, const SendDeviceSyncTickleCallback& callback, const ErrorCallback& error_callback, const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) = 0; // ToggleEasyUnlock typedef base::Callback ToggleEasyUnlockCallback; virtual void ToggleEasyUnlock( const ToggleEasyUnlockRequest& request, const ToggleEasyUnlockCallback& callback, const ErrorCallback& error_callback) = 0; // SetupEnrollment typedef base::Callback SetupEnrollmentCallback; virtual void SetupEnrollment(const SetupEnrollmentRequest& request, const SetupEnrollmentCallback& callback, const ErrorCallback& error_callback) = 0; // FinishEnrollment typedef base::Callback FinishEnrollmentCallback; virtual void FinishEnrollment( const FinishEnrollmentRequest& request, const FinishEnrollmentCallback& callback, const ErrorCallback& error_callback) = 0; // Returns the access token used to make the request. If no request has been // made yet, this function will return an empty string. virtual std::string GetAccessTokenUsed() = 0; }; // Interface for creating CryptAuthClient instances. Because each // CryptAuthClient instance can only be used for one API call, a factory makes // it easier to make multiple requests in sequence or in parallel. class CryptAuthClientFactory { public: virtual ~CryptAuthClientFactory() {} virtual std::unique_ptr CreateInstance() = 0; }; } // namespace cryptauth #endif // COMPONENTS_CRYPTAUTH_CRYPTAUTH_CLIENT_H_