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(