diff --git a/examples/site/http_form_data/http_form_data.cc b/examples/site/http_form_data/http_form_data.cc index f02340f5..58254c23 100644 --- a/examples/site/http_form_data/http_form_data.cc +++ b/examples/site/http_form_data/http_form_data.cc @@ -59,7 +59,7 @@ class FormDataDelimiter { } // namespace -gcf::HttpResponse http_form_data(gcf::HttpRequest request) { // NOLINT +gcf::HttpResponse http_form_data(gcf::HttpRequest request) { if (request.verb() != "POST") { return gcf::HttpResponse{}.set_result(gcf::HttpResponse::kMethodNotAllowed); } @@ -72,8 +72,10 @@ gcf::HttpResponse http_form_data(gcf::HttpRequest request) { // NOLINT return gcf::HttpResponse{}.set_result(gcf::HttpResponse::kBadRequest); } auto delimiter = FormDataDelimiter::FromHeader(header->second); + + auto payload = std::move(request).payload(); std::vector parts = - absl::StrSplit(request.payload(), delimiter, absl::SkipEmpty{}); + absl::StrSplit(payload, delimiter, absl::SkipEmpty{}); nlohmann::json result{{"parts", std::vector{}}}; for (auto& p : parts) { std::vector components = diff --git a/google/cloud/functions/http_request.h b/google/cloud/functions/http_request.h index af8e7981..50e3fc15 100644 --- a/google/cloud/functions/http_request.h +++ b/google/cloud/functions/http_request.h @@ -41,7 +41,8 @@ class HttpRequest { [[nodiscard]] std::string const& target() const { return target_; } /// The request payload - [[nodiscard]] std::string const& payload() const { return payload_; } + [[nodiscard]] std::string const& payload() const& { return payload_; } + [[nodiscard]] std::string&& payload() && { return std::move(payload_); } /// The request HTTP headers [[nodiscard]] HeadersType const& headers() const { return headers_; }