Temporarily revert streaming HTTP API
These API needs more investigation. Keep strings for now.
BUG:24790811
Change-Id: Ie390fd483c058f592d0b0788cad80e0c4751615c
Reviewed-on: https://weave-review.googlesource.com/1278
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/libweave/examples/ubuntu/event_http_server.cc b/libweave/examples/ubuntu/event_http_server.cc
index f2c136c..14a5723 100644
--- a/libweave/examples/ubuntu/event_http_server.cc
+++ b/libweave/examples/ubuntu/event_http_server.cc
@@ -63,11 +63,6 @@
: task_runner_{task_runner} {
req_.reset(req);
uri_ = evhttp_request_get_evhttp_uri(req_.get());
-
- std::vector<uint8_t> data(evbuffer_get_length(req_->input_buffer));
- evbuffer_remove(req_->input_buffer, data.data(), data.size());
-
- data_.reset(new MemoryReadStream{data, task_runner_});
}
~RequestImpl() {}
@@ -82,7 +77,12 @@
return {};
return header;
}
- InputStream* GetDataStream() { return data_.get(); }
+ std::string GetData() {
+ std::string data;
+ data.resize(evbuffer_get_length(req_->input_buffer));
+ evbuffer_remove(req_->input_buffer, &data[0], data.size());
+ return data;
+ }
void SendReply(int status_code,
const std::string& data,
diff --git a/libweave/include/weave/provider/http_server.h b/libweave/include/weave/provider/http_server.h
index ce0b684..44ff34e 100644
--- a/libweave/include/weave/provider/http_server.h
+++ b/libweave/include/weave/provider/http_server.h
@@ -22,7 +22,7 @@
virtual std::string GetPath() const = 0;
virtual std::string GetFirstHeader(const std::string& name) const = 0;
- virtual InputStream* GetDataStream() = 0;
+ virtual std::string GetData() = 0;
virtual void SendReply(int status_code,
const std::string& data,
diff --git a/libweave/src/privet/privet_manager.cc b/libweave/src/privet/privet_manager.cc
index 31af8ae..b2a9882 100644
--- a/libweave/src/privet/privet_manager.cc
+++ b/libweave/src/privet/privet_manager.cc
@@ -124,30 +124,9 @@
SplitAtFirst(request->GetFirstHeader(http::kContentType), ";", true)
.first;
- if (content_type != http::kJson)
- return PrivetRequestHandlerWithData(request, {});
-
- std::unique_ptr<MemoryStream> mem_stream{new MemoryStream{{}, task_runner_}};
- auto copier = std::make_shared<StreamCopier>(request->GetDataStream(),
- mem_stream.get());
- auto on_success = [request, copier](const base::WeakPtr<Manager>& weak_ptr,
- std::unique_ptr<MemoryStream> mem_stream,
- size_t size) {
- if (weak_ptr) {
- std::string data{mem_stream->GetData().begin(),
- mem_stream->GetData().end()};
- weak_ptr->PrivetRequestHandlerWithData(request, data);
- }
- };
- auto on_error = [request](const base::WeakPtr<Manager>& weak_ptr,
- const Error* error) {
- if (weak_ptr)
- weak_ptr->PrivetRequestHandlerWithData(request, {});
- };
-
- copier->Copy(base::Bind(on_success, weak_ptr_factory_.GetWeakPtr(),
- base::Passed(&mem_stream)),
- base::Bind(on_error, weak_ptr_factory_.GetWeakPtr()));
+ return PrivetRequestHandlerWithData(request, content_type == http::kJson
+ ? request->GetData()
+ : std::string{});
}
void Manager::PrivetRequestHandlerWithData(