@@ -36,9 +36,8 @@ std::vector<std::pair<std::string, std::string>> TrimEmptyQueryParameters(
3636Status RestResponseToProto (google::protobuf::Message& destination,
3737 RestResponse&& rest_response);
3838
39- Status ProtoRequestToJsonPayload (google::protobuf::Message const & request,
40- bool preserve_proto_field_names,
41- std::string& json_payload);
39+ StatusOr<std::string> ProtoRequestToJsonPayload (
40+ google::protobuf::Message const & request, bool preserve_proto_field_names);
4241
4342rest_internal::RestRequest CreateRestRequest (
4443 std::string path,
@@ -93,15 +92,14 @@ StatusOr<Response> Patch(
9392 rest_internal::RestClient& client, rest_internal::RestContext& rest_context,
9493 Request const & request, bool preserve_proto_field_names, std::string path,
9594 std::vector<std::pair<std::string, std::string>> query_params = {}) {
96- std::string json_payload;
97- auto status = ProtoRequestToJsonPayload (request, preserve_proto_field_names,
98- json_payload);
99- if (!status.ok ()) return status;
95+ auto json_payload =
96+ ProtoRequestToJsonPayload (request, preserve_proto_field_names);
97+ if (!json_payload.ok ()) return std::move (json_payload).status ();
10098 auto rest_request =
10199 CreateRestRequest (std::move (path), std::move (query_params));
102100 rest_request.AddHeader (" content-type" , " application/json" );
103101 auto response = client.Patch (rest_context, rest_request,
104- {absl::MakeConstSpan (json_payload)});
102+ {absl::MakeConstSpan (* json_payload)});
105103 if (!response.ok ()) return response.status ();
106104 return RestResponseToProto<Response>(std::move (**response));
107105}
@@ -111,15 +109,14 @@ StatusOr<Response> Post(
111109 rest_internal::RestClient& client, rest_internal::RestContext& rest_context,
112110 Request const & request, bool preserve_proto_field_names, std::string path,
113111 std::vector<std::pair<std::string, std::string>> query_params = {}) {
114- std::string json_payload;
115- auto status = ProtoRequestToJsonPayload (request, preserve_proto_field_names,
116- json_payload);
117- if (!status.ok ()) return status;
112+ auto json_payload =
113+ ProtoRequestToJsonPayload (request, preserve_proto_field_names);
114+ if (!json_payload.ok ()) return std::move (json_payload).status ();
118115 auto rest_request =
119116 CreateRestRequest (std::move (path), std::move (query_params));
120117 rest_request.AddHeader (" content-type" , " application/json" );
121118 auto response = client.Post (rest_context, rest_request,
122- {absl::MakeConstSpan (json_payload)});
119+ {absl::MakeConstSpan (* json_payload)});
123120 if (!response.ok ()) return response.status ();
124121 return RestResponseToProto<Response>(std::move (**response));
125122}
@@ -129,15 +126,14 @@ Status Post(
129126 rest_internal::RestClient& client, rest_internal::RestContext& rest_context,
130127 Request const & request, bool preserve_proto_field_names, std::string path,
131128 std::vector<std::pair<std::string, std::string>> query_params = {}) {
132- std::string json_payload;
133- auto status = ProtoRequestToJsonPayload (request, preserve_proto_field_names,
134- json_payload);
135- if (!status.ok ()) return status;
129+ auto json_payload =
130+ ProtoRequestToJsonPayload (request, preserve_proto_field_names);
131+ if (!json_payload.ok ()) return std::move (json_payload).status ();
136132 auto rest_request =
137133 CreateRestRequest (std::move (path), std::move (query_params));
138134 rest_request.AddHeader (" content-type" , " application/json" );
139135 auto response = client.Post (rest_context, rest_request,
140- {absl::MakeConstSpan (json_payload)});
136+ {absl::MakeConstSpan (* json_payload)});
141137 if (!response.ok ()) return response.status ();
142138 return AsStatus (std::move (**response));
143139}
@@ -147,15 +143,14 @@ StatusOr<Response> Put(
147143 rest_internal::RestClient& client, rest_internal::RestContext& rest_context,
148144 Request const & request, bool preserve_proto_field_names, std::string path,
149145 std::vector<std::pair<std::string, std::string>> query_params = {}) {
150- std::string json_payload;
151- auto status = ProtoRequestToJsonPayload (request, preserve_proto_field_names,
152- json_payload);
153- if (!status.ok ()) return status;
146+ auto json_payload =
147+ ProtoRequestToJsonPayload (request, preserve_proto_field_names);
148+ if (!json_payload.ok ()) return std::move (json_payload).status ();
154149 auto rest_request =
155150 CreateRestRequest (std::move (path), std::move (query_params));
156151 rest_request.AddHeader (" content-type" , " application/json" );
157152 auto response = client.Put (rest_context, rest_request,
158- {absl::MakeConstSpan (json_payload)});
153+ {absl::MakeConstSpan (* json_payload)});
159154 if (!response.ok ()) return response.status ();
160155 return RestResponseToProto<Response>(std::move (**response));
161156}
0 commit comments