// Copyright 2013 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 REMOTING_HOST_SETUP_SERVICE_CLIENT_H_ #define REMOTING_HOST_SETUP_SERVICE_CLIENT_H_ #include <string> #include "base/memory/ref_counted.h" namespace net { class URLRequestContextGetter; } // A class that gives access to the Chromoting service. namespace remoting { class ServiceClient { public: // TODO(simonmorris): Consider using a Callback instead of a delegate. class Delegate { public: // Invoked when a host has been registered. virtual void OnHostRegistered(const std::string& authorization_code) = 0; // Invoked when a host has been unregistered. virtual void OnHostUnregistered() = 0; // Invoked when there is an OAuth error. virtual void OnOAuthError() = 0; // Invoked when there is a network error or upon receiving an invalid // response. virtual void OnNetworkError(int response_code) = 0; protected: virtual ~Delegate() {} }; ServiceClient(const std::string& chromoting_hosts_url, net::URLRequestContextGetter* context_getter); ~ServiceClient(); // Register a host. void RegisterHost(const std::string& host_id, const std::string& host_name, const std::string& public_key, const std::string& host_client_id, const std::string& oauth_access_token, Delegate* delegate); // Unregister a host. void UnregisterHost(const std::string& host_id, const std::string& oauth_access_token, Delegate* delegate); private: // The guts of the implementation live in this class. class Core; scoped_refptr<Core> core_; DISALLOW_COPY_AND_ASSIGN(ServiceClient); }; } // namespace remoting #endif // REMOTING_HOST_SETUP_SERVICE_CLIENT_H_