libweave: Remove mime_type from HttpClient interface
This simplifies platform side implementation. The implementation will
just submit all headers as is.
BUG=brillo:1250
TEST=`FEATURES=test emerge-gizmo libweave buffet`
Change-Id: Id7f968fab5c18ca30223e456c04d36c2a0becb7e
Reviewed-on: https://chromium-review.googlesource.com/291332
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/http_transport_client.cc b/buffet/http_transport_client.cc
index dd43550..4d68aa3 100644
--- a/buffet/http_transport_client.cc
+++ b/buffet/http_transport_client.cc
@@ -8,6 +8,7 @@
#include <chromeos/errors/error.h>
#include <chromeos/http/http_request.h>
#include <chromeos/http/http_utils.h>
+#include <chromeos/streams/memory_stream.h>
namespace buffet {
@@ -67,9 +68,14 @@
const Headers& headers,
const std::string& data,
chromeos::ErrorPtr* error) {
- return std::unique_ptr<weave::HttpClient::Response>{new ResponseImpl{
- chromeos::http::SendRequestAndBlock(method, url, data.data(), data.size(),
- "", headers, transport_, error)}};
+ chromeos::http::Request request(url, method, transport_);
+ request.AddHeaders(headers);
+ if (!data.empty()) {
+ if (!request.AddRequestBody(data.data(), data.size(), error))
+ return nullptr;
+ }
+ return std::unique_ptr<weave::HttpClient::Response>{
+ new ResponseImpl{request.GetResponseAndBlock(error)}};
}
int HttpTransportClient::SendRequest(const std::string& method,
@@ -78,10 +84,21 @@
const std::string& data,
const SuccessCallback& success_callback,
const ErrorCallback& error_callback) {
- return chromeos::http::SendRequest(
- method, url, data.data(), data.size(), "", headers, transport_,
- base::Bind(&OnSuccessCallback, success_callback),
- base::Bind(&OnErrorCallback, error_callback));
+ chromeos::http::Request request(url, method, transport_);
+ request.AddHeaders(headers);
+ if (!data.empty()) {
+ auto stream = chromeos::MemoryStream::OpenCopyOf(data, nullptr);
+ CHECK_GT(stream->GetRemainingSize(), 0);
+ chromeos::ErrorPtr error;
+ if (!request.AddRequestBody(std::move(stream), &error)) {
+ transport_->RunCallbackAsync(
+ FROM_HERE,
+ base::Bind(error_callback, 0, base::Owned(error.release())));
+ return 0;
+ }
+ }
+ return request.GetResponse(base::Bind(&OnSuccessCallback, success_callback),
+ base::Bind(&OnErrorCallback, error_callback));
}
} // namespace buffet