buffet: Move HttpTransportClient out of libweave Not libweave has not dependency on chromeos::http::Transport BUG=brillo:1250 TEST='FEATURES=test emerge-gizmo libweave buffet' Change-Id: I8aaead5d9ec527e5746ab000fd9b98983b1ac5b4
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h index 660fad8..76b636d 100644 --- a/libweave/include/weave/device.h +++ b/libweave/include/weave/device.h
@@ -14,6 +14,7 @@ #include <weave/commands.h> #include <weave/config.h> #include <weave/export.h> +#include <weave/http_client.h> #include <weave/http_server.h> #include <weave/mdns.h> #include <weave/network.h> @@ -39,6 +40,7 @@ virtual ~Device() = default; virtual void Start(const Options& options, + HttpClient* http_client, Network* network, Mdns* mdns, HttpServer* http_server) = 0;
diff --git a/libweave/libweave.gyp b/libweave/libweave.gyp index be4d1d7..ba7e026 100644 --- a/libweave/libweave.gyp +++ b/libweave/libweave.gyp
@@ -34,7 +34,6 @@ 'src/commands/user_role.cc', 'src/device_manager.cc', 'src/device_registration_info.cc', - 'src/http_transport_client.cc', 'src/notification/notification_parser.cc', 'src/notification/pull_channel.cc', 'src/notification/xml_node.cc',
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc index 344c725..8fce1fb 100644 --- a/libweave/src/device_manager.cc +++ b/libweave/src/device_manager.cc
@@ -7,13 +7,11 @@ #include <string> #include <base/message_loop/message_loop.h> -#include <chromeos/http/http_transport.h> #include "libweave/src/base_api_handler.h" #include "libweave/src/buffet_config.h" #include "libweave/src/commands/command_manager.h" #include "libweave/src/device_registration_info.h" -#include "libweave/src/http_transport_client.h" #include "libweave/src/privet/privet_manager.h" #include "libweave/src/states/state_change_queue.h" #include "libweave/src/states/state_manager.h" @@ -24,8 +22,6 @@ // Max of 100 state update events should be enough in the queue. const size_t kMaxStateChangeQueueSize = 100; -// The number of seconds each HTTP request will be allowed before timing out. -const int kRequestTimeoutSeconds = 30; } // namespace @@ -34,6 +30,7 @@ DeviceManager::~DeviceManager() {} void DeviceManager::Start(const Options& options, + HttpClient* http_client, Network* network, Mdns* mdns, HttpServer* http_server) { @@ -44,18 +41,13 @@ state_manager_ = std::make_shared<StateManager>(state_change_queue_.get()); state_manager_->Startup(); - auto transport = chromeos::http::Transport::CreateDefault(); - transport->SetDefaultTimeout( - base::TimeDelta::FromSeconds(kRequestTimeoutSeconds)); - std::unique_ptr<BuffetConfig> config{new BuffetConfig{options.state_path}}; config->Load(options.config_path); - http_client_.reset(new buffet::HttpTransportClient{transport}); // TODO(avakulenko): Figure out security implications of storing // device info state data unencrypted. device_info_.reset(new DeviceRegistrationInfo( - command_manager_, state_manager_, std::move(config), http_client_.get(), + command_manager_, state_manager_, std::move(config), http_client, base::MessageLoop::current()->task_runner(), options.xmpp_enabled, network)); base_api_handler_.reset(
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h index 2e65ffe..216c9ff 100644 --- a/libweave/src/device_manager.h +++ b/libweave/src/device_manager.h
@@ -8,10 +8,6 @@ #include <base/memory/weak_ptr.h> #include <weave/device.h> -namespace buffet { -class HttpTransportClient; -} // namespace buffet - namespace weave { class BaseApiHandler; @@ -31,6 +27,7 @@ ~DeviceManager() override; void Start(const Options& options, + HttpClient* http_client, Network* network, Mdns* mdns, HttpServer* http_server) override; @@ -49,8 +46,6 @@ void OnWiFiBootstrapStateChanged(weave::WifiSetupState state); - // TODO(vitalybuka): Move to buffet. - std::unique_ptr<buffet::HttpTransportClient> http_client_; std::shared_ptr<CommandManager> command_manager_; std::unique_ptr<StateChangeQueue> state_change_queue_; std::shared_ptr<StateManager> state_manager_;
diff --git a/libweave/src/device_registration_info.h b/libweave/src/device_registration_info.h index 3c8dff3..6f94573 100644 --- a/libweave/src/device_registration_info.h +++ b/libweave/src/device_registration_info.h
@@ -21,7 +21,6 @@ #include <chromeos/backoff_entry.h> #include <chromeos/data_encoding.h> #include <chromeos/errors/error.h> -#include <chromeos/http/http_transport.h> #include <weave/cloud.h> #include <weave/config.h> #include <weave/http_client.h>
diff --git a/libweave/src/http_transport_client.cc b/libweave/src/http_transport_client.cc deleted file mode 100644 index dbe0ffc..0000000 --- a/libweave/src/http_transport_client.cc +++ /dev/null
@@ -1,85 +0,0 @@ -// Copyright 2015 The Chromium OS Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "libweave/src/http_transport_client.h" - -#include <base/bind.h> -#include <chromeos/errors/error.h> -#include <chromeos/http/http_request.h> -#include <chromeos/http/http_utils.h> - -namespace buffet { - -namespace { - -class ResponseImpl : public weave::HttpClient::Response { - public: - ~ResponseImpl() override = default; - explicit ResponseImpl(std::unique_ptr<chromeos::http::Response> response) - : response_{std::move(response)}, - data_{response_->ExtractDataAsString()} {} - - // weave::HttpClient::Response implementation - int GetStatusCode() const override { return response_->GetStatusCode(); } - - std::string GetContentType() const override { - return response_->GetContentType(); - } - - const std::string& GetData() const override { return data_; } - - private: - std::unique_ptr<chromeos::http::Response> response_; - std::string data_; - DISALLOW_COPY_AND_ASSIGN(ResponseImpl); -}; - -void OnSuccessCallback( - const weave::HttpClient::SuccessCallback& success_callback, - int id, - std::unique_ptr<chromeos::http::Response> response) { - success_callback.Run(id, ResponseImpl{std::move(response)}); -} - -void OnErrorCallback(const weave::HttpClient::ErrorCallback& error_callback, - int id, - const chromeos::Error* error) { - error_callback.Run(id, error); -} - -} // anonymous namespace - -HttpTransportClient::HttpTransportClient( - const std::shared_ptr<chromeos::http::Transport>& transport) - : transport_{transport} {} - -HttpTransportClient::~HttpTransportClient() {} - -std::unique_ptr<weave::HttpClient::Response> -HttpTransportClient::SendRequestAndBlock(const std::string& method, - const std::string& url, - const std::string& data, - const std::string& mime_type, - const Headers& headers, - chromeos::ErrorPtr* error) { - return std::unique_ptr<weave::HttpClient::Response>{ - new ResponseImpl{chromeos::http::SendRequestAndBlock( - method, url, data.data(), data.size(), mime_type, headers, transport_, - error)}}; -} - -int HttpTransportClient::SendRequest(const std::string& method, - const std::string& url, - const std::string& data, - const std::string& mime_type, - const Headers& headers, - const SuccessCallback& success_callback, - const ErrorCallback& error_callback) { - return chromeos::http::SendRequest( - method, url, data.data(), data.size(), mime_type, headers, transport_, - base::Bind(&OnSuccessCallback, success_callback), - base::Bind(&OnErrorCallback, error_callback)); -} - -} // namespace buffet
diff --git a/libweave/src/http_transport_client.h b/libweave/src/http_transport_client.h deleted file mode 100644 index 0eb5579..0000000 --- a/libweave/src/http_transport_client.h +++ /dev/null
@@ -1,52 +0,0 @@ -// Copyright 2015 The Chromium OS 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 LIBWEAVE_SRC_HTTP_TRANSPORT_CLIENT_H_ -#define LIBWEAVE_SRC_HTTP_TRANSPORT_CLIENT_H_ - -#include <memory> -#include <string> - -#include <weave/http_client.h> - -namespace chromeos { -namespace http { -class Transport; -} -} - -namespace buffet { - -class HttpTransportClient : public weave::HttpClient { - public: - explicit HttpTransportClient( - const std::shared_ptr<chromeos::http::Transport>& transport); - - ~HttpTransportClient() override; - - // weave::HttpClient implementation. - std::unique_ptr<Response> SendRequestAndBlock( - const std::string& method, - const std::string& url, - const std::string& data, - const std::string& mime_type, - const Headers& headers, - chromeos::ErrorPtr* error) override; - - int SendRequest(const std::string& method, - const std::string& url, - const std::string& data, - const std::string& mime_type, - const Headers& headers, - const SuccessCallback& success_callback, - const ErrorCallback& error_callback) override; - - private: - std::shared_ptr<chromeos::http::Transport> transport_; - DISALLOW_COPY_AND_ASSIGN(HttpTransportClient); -}; - -} // namespace buffet - -#endif // LIBWEAVE_SRC_HTTP_TRANSPORT_CLIENT_H_