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_