Skip to content

Commit 6e9d901

Browse files
authored
fix: add implicit routing in GAPICs (googleapis#12544)
1 parent c16ba04 commit 6e9d901

567 files changed

Lines changed: 6919 additions & 3262 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

generator/integration_tests/golden/v1/internal/golden_kitchen_sink_metadata_decorator.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ StatusOr<google::test::admin::database::v1::GenerateAccessTokenResponse>
4242
GoldenKitchenSinkMetadata::GenerateAccessToken(
4343
grpc::ClientContext& context,
4444
google::test::admin::database::v1::GenerateAccessTokenRequest const& request) {
45-
SetMetadata(context, absl::StrCat("name=", request.name()));
45+
SetMetadata(context, absl::StrCat("name=", internal::UrlEncode(request.name())));
4646
return child_->GenerateAccessToken(context, request);
4747
}
4848

@@ -66,15 +66,15 @@ StatusOr<google::test::admin::database::v1::ListLogsResponse>
6666
GoldenKitchenSinkMetadata::ListLogs(
6767
grpc::ClientContext& context,
6868
google::test::admin::database::v1::ListLogsRequest const& request) {
69-
SetMetadata(context, absl::StrCat("parent=", request.parent()));
69+
SetMetadata(context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
7070
return child_->ListLogs(context, request);
7171
}
7272

7373
StatusOr<google::test::admin::database::v1::ListServiceAccountKeysResponse>
7474
GoldenKitchenSinkMetadata::ListServiceAccountKeys(
7575
grpc::ClientContext& context,
7676
google::test::admin::database::v1::ListServiceAccountKeysRequest const& request) {
77-
SetMetadata(context, absl::StrCat("name=", request.name()));
77+
SetMetadata(context, absl::StrCat("name=", internal::UrlEncode(request.name())));
7878
return child_->ListServiceAccountKeys(context, request);
7979
}
8080

generator/integration_tests/golden/v1/internal/golden_kitchen_sink_metadata_decorator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#define GOOGLE_CLOUD_CPP_GENERATOR_INTEGRATION_TESTS_GOLDEN_V1_INTERNAL_GOLDEN_KITCHEN_SINK_METADATA_DECORATOR_H
2121

2222
#include "generator/integration_tests/golden/v1/internal/golden_kitchen_sink_stub.h"
23+
#include "google/cloud/internal/url_encode.h"
2324
#include "google/cloud/version.h"
2425
#include <map>
2526
#include <memory>

generator/integration_tests/golden/v1/internal/golden_thing_admin_metadata_decorator.cc

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ StatusOr<google::test::admin::database::v1::ListDatabasesResponse>
4242
GoldenThingAdminMetadata::ListDatabases(
4343
grpc::ClientContext& context,
4444
google::test::admin::database::v1::ListDatabasesRequest const& request) {
45-
SetMetadata(context, absl::StrCat("parent=", request.parent()));
45+
SetMetadata(context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
4646
return child_->ListDatabases(context, request);
4747
}
4848

@@ -51,15 +51,15 @@ GoldenThingAdminMetadata::AsyncCreateDatabase(
5151
google::cloud::CompletionQueue& cq,
5252
std::shared_ptr<grpc::ClientContext> context,
5353
google::test::admin::database::v1::CreateDatabaseRequest const& request) {
54-
SetMetadata(*context, absl::StrCat("parent=", request.parent()));
54+
SetMetadata(*context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
5555
return child_->AsyncCreateDatabase(cq, std::move(context), request);
5656
}
5757

5858
StatusOr<google::test::admin::database::v1::Database>
5959
GoldenThingAdminMetadata::GetDatabase(
6060
grpc::ClientContext& context,
6161
google::test::admin::database::v1::GetDatabaseRequest const& request) {
62-
SetMetadata(context, absl::StrCat("name=", request.name()));
62+
SetMetadata(context, absl::StrCat("name=", internal::UrlEncode(request.name())));
6363
return child_->GetDatabase(context, request);
6464
}
6565

@@ -68,7 +68,7 @@ GoldenThingAdminMetadata::AsyncUpdateDatabaseDdl(
6868
google::cloud::CompletionQueue& cq,
6969
std::shared_ptr<grpc::ClientContext> context,
7070
google::test::admin::database::v1::UpdateDatabaseDdlRequest const& request) {
71-
SetMetadata(*context, absl::StrCat("database=", request.database()));
71+
SetMetadata(*context, absl::StrCat("database=", internal::UrlEncode(request.database())));
7272
return child_->AsyncUpdateDatabaseDdl(cq, std::move(context), request);
7373
}
7474

@@ -124,31 +124,31 @@ StatusOr<google::test::admin::database::v1::GetDatabaseDdlResponse>
124124
GoldenThingAdminMetadata::GetDatabaseDdl(
125125
grpc::ClientContext& context,
126126
google::test::admin::database::v1::GetDatabaseDdlRequest const& request) {
127-
SetMetadata(context, absl::StrCat("database=", request.database()));
127+
SetMetadata(context, absl::StrCat("database=", internal::UrlEncode(request.database())));
128128
return child_->GetDatabaseDdl(context, request);
129129
}
130130

131131
StatusOr<google::iam::v1::Policy>
132132
GoldenThingAdminMetadata::SetIamPolicy(
133133
grpc::ClientContext& context,
134134
google::iam::v1::SetIamPolicyRequest const& request) {
135-
SetMetadata(context, absl::StrCat("resource=", request.resource()));
135+
SetMetadata(context, absl::StrCat("resource=", internal::UrlEncode(request.resource())));
136136
return child_->SetIamPolicy(context, request);
137137
}
138138

139139
StatusOr<google::iam::v1::Policy>
140140
GoldenThingAdminMetadata::GetIamPolicy(
141141
grpc::ClientContext& context,
142142
google::iam::v1::GetIamPolicyRequest const& request) {
143-
SetMetadata(context, absl::StrCat("resource=", request.resource()));
143+
SetMetadata(context, absl::StrCat("resource=", internal::UrlEncode(request.resource())));
144144
return child_->GetIamPolicy(context, request);
145145
}
146146

147147
StatusOr<google::iam::v1::TestIamPermissionsResponse>
148148
GoldenThingAdminMetadata::TestIamPermissions(
149149
grpc::ClientContext& context,
150150
google::iam::v1::TestIamPermissionsRequest const& request) {
151-
SetMetadata(context, absl::StrCat("resource=", request.resource()));
151+
SetMetadata(context, absl::StrCat("resource=", internal::UrlEncode(request.resource())));
152152
return child_->TestIamPermissions(context, request);
153153
}
154154

@@ -157,39 +157,39 @@ GoldenThingAdminMetadata::AsyncCreateBackup(
157157
google::cloud::CompletionQueue& cq,
158158
std::shared_ptr<grpc::ClientContext> context,
159159
google::test::admin::database::v1::CreateBackupRequest const& request) {
160-
SetMetadata(*context, absl::StrCat("parent=", request.parent()));
160+
SetMetadata(*context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
161161
return child_->AsyncCreateBackup(cq, std::move(context), request);
162162
}
163163

164164
StatusOr<google::test::admin::database::v1::Backup>
165165
GoldenThingAdminMetadata::GetBackup(
166166
grpc::ClientContext& context,
167167
google::test::admin::database::v1::GetBackupRequest const& request) {
168-
SetMetadata(context, absl::StrCat("name=", request.name()));
168+
SetMetadata(context, absl::StrCat("name=", internal::UrlEncode(request.name())));
169169
return child_->GetBackup(context, request);
170170
}
171171

172172
StatusOr<google::test::admin::database::v1::Backup>
173173
GoldenThingAdminMetadata::UpdateBackup(
174174
grpc::ClientContext& context,
175175
google::test::admin::database::v1::UpdateBackupRequest const& request) {
176-
SetMetadata(context, absl::StrCat("backup.name=", request.backup().name()));
176+
SetMetadata(context, absl::StrCat("backup.name=", internal::UrlEncode(request.backup().name())));
177177
return child_->UpdateBackup(context, request);
178178
}
179179

180180
Status
181181
GoldenThingAdminMetadata::DeleteBackup(
182182
grpc::ClientContext& context,
183183
google::test::admin::database::v1::DeleteBackupRequest const& request) {
184-
SetMetadata(context, absl::StrCat("name=", request.name()));
184+
SetMetadata(context, absl::StrCat("name=", internal::UrlEncode(request.name())));
185185
return child_->DeleteBackup(context, request);
186186
}
187187

188188
StatusOr<google::test::admin::database::v1::ListBackupsResponse>
189189
GoldenThingAdminMetadata::ListBackups(
190190
grpc::ClientContext& context,
191191
google::test::admin::database::v1::ListBackupsRequest const& request) {
192-
SetMetadata(context, absl::StrCat("parent=", request.parent()));
192+
SetMetadata(context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
193193
return child_->ListBackups(context, request);
194194
}
195195

@@ -198,23 +198,23 @@ GoldenThingAdminMetadata::AsyncRestoreDatabase(
198198
google::cloud::CompletionQueue& cq,
199199
std::shared_ptr<grpc::ClientContext> context,
200200
google::test::admin::database::v1::RestoreDatabaseRequest const& request) {
201-
SetMetadata(*context, absl::StrCat("parent=", request.parent()));
201+
SetMetadata(*context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
202202
return child_->AsyncRestoreDatabase(cq, std::move(context), request);
203203
}
204204

205205
StatusOr<google::test::admin::database::v1::ListDatabaseOperationsResponse>
206206
GoldenThingAdminMetadata::ListDatabaseOperations(
207207
grpc::ClientContext& context,
208208
google::test::admin::database::v1::ListDatabaseOperationsRequest const& request) {
209-
SetMetadata(context, absl::StrCat("parent=", request.parent()));
209+
SetMetadata(context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
210210
return child_->ListDatabaseOperations(context, request);
211211
}
212212

213213
StatusOr<google::test::admin::database::v1::ListBackupOperationsResponse>
214214
GoldenThingAdminMetadata::ListBackupOperations(
215215
grpc::ClientContext& context,
216216
google::test::admin::database::v1::ListBackupOperationsRequest const& request) {
217-
SetMetadata(context, absl::StrCat("parent=", request.parent()));
217+
SetMetadata(context, absl::StrCat("parent=", internal::UrlEncode(request.parent())));
218218
return child_->ListBackupOperations(context, request);
219219
}
220220

@@ -232,7 +232,7 @@ GoldenThingAdminMetadata::AsyncGetDatabase(
232232
google::cloud::CompletionQueue& cq,
233233
std::shared_ptr<grpc::ClientContext> context,
234234
google::test::admin::database::v1::GetDatabaseRequest const& request) {
235-
SetMetadata(*context, absl::StrCat("name=", request.name()));
235+
SetMetadata(*context, absl::StrCat("name=", internal::UrlEncode(request.name())));
236236
return child_->AsyncGetDatabase(cq, std::move(context), request);
237237
}
238238

@@ -290,15 +290,15 @@ GoldenThingAdminMetadata::AsyncGetOperation(
290290
google::cloud::CompletionQueue& cq,
291291
std::shared_ptr<grpc::ClientContext> context,
292292
google::longrunning::GetOperationRequest const& request) {
293-
SetMetadata(*context, "name=" + request.name());
293+
SetMetadata(*context, absl::StrCat("name=", internal::UrlEncode(request.name())));
294294
return child_->AsyncGetOperation(cq, std::move(context), request);
295295
}
296296

297297
future<Status> GoldenThingAdminMetadata::AsyncCancelOperation(
298298
google::cloud::CompletionQueue& cq,
299299
std::shared_ptr<grpc::ClientContext> context,
300300
google::longrunning::CancelOperationRequest const& request) {
301-
SetMetadata(*context, "name=" + request.name());
301+
SetMetadata(*context, absl::StrCat("name=", internal::UrlEncode(request.name())));
302302
return child_->AsyncCancelOperation(cq, std::move(context), request);
303303
}
304304

generator/integration_tests/golden/v1/internal/golden_thing_admin_metadata_decorator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#define GOOGLE_CLOUD_CPP_GENERATOR_INTEGRATION_TESTS_GOLDEN_V1_INTERNAL_GOLDEN_THING_ADMIN_METADATA_DECORATOR_H
2121

2222
#include "generator/integration_tests/golden/v1/internal/golden_thing_admin_stub.h"
23+
#include "google/cloud/internal/url_encode.h"
2324
#include "google/cloud/version.h"
2425
#include <google/longrunning/operations.grpc.pb.h>
2526
#include <map>

generator/internal/descriptor_utils_test.cc

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -835,9 +835,9 @@ INSTANTIATE_TEST_SUITE_P(
835835
MethodVarsTestValues("google.protobuf.Service.Method2",
836836
"longrunning_deduced_response_type",
837837
"google::protobuf::Bar"),
838-
MethodVarsTestValues("google.protobuf.Service.Method2",
839-
"method_request_params",
840-
"\"parent=\", request.parent()"),
838+
MethodVarsTestValues(
839+
"google.protobuf.Service.Method2", "method_request_params",
840+
"\"parent=\", internal::UrlEncode(request.parent())"),
841841
MethodVarsTestValues("google.protobuf.Service.Method2", "idempotency",
842842
"kNonIdempotent"),
843843
MethodVarsTestValues("google.protobuf.Service.Method2",
@@ -856,9 +856,9 @@ INSTANTIATE_TEST_SUITE_P(
856856
MethodVarsTestValues("google.protobuf.Service.Method3",
857857
"longrunning_deduced_response_type",
858858
"google::protobuf::Struct"),
859-
MethodVarsTestValues("google.protobuf.Service.Method3",
860-
"method_request_params",
861-
"\"parent=\", request.parent()"),
859+
MethodVarsTestValues(
860+
"google.protobuf.Service.Method3", "method_request_params",
861+
"\"parent=\", internal::UrlEncode(request.parent())"),
862862
MethodVarsTestValues("google.protobuf.Service.Method3", "idempotency",
863863
"kIdempotent"),
864864
MethodVarsTestValues("google.protobuf.Service.Method3",
@@ -871,7 +871,7 @@ INSTANTIATE_TEST_SUITE_P(
871871
"range_output_type", "google::protobuf::Bar"),
872872
MethodVarsTestValues("google.protobuf.Service.Method4",
873873
"method_request_params",
874-
"\"name=\", request.name()"),
874+
"\"name=\", internal::UrlEncode(request.name())"),
875875
MethodVarsTestValues("google.protobuf.Service.Method4", "idempotency",
876876
"kNonIdempotent"),
877877
// Method5
@@ -901,9 +901,9 @@ INSTANTIATE_TEST_SUITE_P(
901901
"method_request_setters1",
902902
" request.set_number(number);\n"
903903
" *request.mutable_widget() = widget;\n"),
904-
MethodVarsTestValues("google.protobuf.Service.Method5",
905-
"method_request_params",
906-
"\"parent=\", request.parent()"),
904+
MethodVarsTestValues(
905+
"google.protobuf.Service.Method5", "method_request_params",
906+
"\"parent=\", internal::UrlEncode(request.parent())"),
907907
MethodVarsTestValues("google.protobuf.Service.Method5",
908908
"method_request_body", "*"),
909909
MethodVarsTestValues("google.protobuf.Service.Method5", "idempotency",
@@ -914,7 +914,7 @@ INSTANTIATE_TEST_SUITE_P(
914914
// Method6
915915
MethodVarsTestValues("google.protobuf.Service.Method6",
916916
"method_request_params",
917-
"\"name=\", request.name()"),
917+
"\"name=\", internal::UrlEncode(request.name())"),
918918
MethodVarsTestValues("google.protobuf.Service.Method6", "idempotency",
919919
"kIdempotent"),
920920
MethodVarsTestValues(
@@ -953,7 +953,8 @@ INSTANTIATE_TEST_SUITE_P(
953953
" *request.mutable_namespace_() = namespace_;\n"),
954954
MethodVarsTestValues(
955955
"google.protobuf.Service.Method8", "method_request_params",
956-
"\"namespace.name=\", request.namespace_().name()"),
956+
"\"namespace.name=\", "
957+
"internal::UrlEncode(request.namespace_().name())"),
957958
MethodVarsTestValues("google.protobuf.Service.Method8",
958959
"request_resource", "request.namespace_()"),
959960
MethodVarsTestValues(

generator/internal/http_option_utils.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,10 @@ void SetHttpDerivedMethodVars(
109109
method_vars["method_request_params"] = absl::StrJoin(
110110
info.field_substitutions, ", \"&\",",
111111
[&](std::string* out, std::pair<std::string, std::string> const& p) {
112-
out->append(absl::StrFormat(
113-
"\"%s=\", request.%s()", internal::UrlEncode(p.first),
114-
FormatFieldAccessorCall(method, p.first)));
112+
out->append(
113+
absl::StrFormat("\"%s=\", internal::UrlEncode(request.%s())",
114+
internal::UrlEncode(p.first),
115+
FormatFieldAccessorCall(method, p.first)));
115116
});
116117
method_vars["method_request_body"] = info.body;
117118
method_vars["method_http_verb"] = info.http_verb;

generator/internal/http_option_utils_test.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ TEST_F(HttpOptionUtilsTest, SetHttpDerivedMethodVarsExtensionInfoSingleParam) {
425425
VarsDictionary vars;
426426
SetHttpDerivedMethodVars(ParseHttpExtension(*method), *method, vars);
427427
EXPECT_THAT(vars.at("method_request_params"),
428-
Eq("\"parent=\", request.parent()"));
428+
Eq("\"parent=\", internal::UrlEncode(request.parent())"));
429429
EXPECT_THAT(vars.at("method_request_body"), Eq("*"));
430430
EXPECT_THAT(vars.at("method_http_verb"), Eq("Post"));
431431
EXPECT_THAT(
@@ -442,8 +442,9 @@ TEST_F(HttpOptionUtilsTest,
442442
VarsDictionary vars;
443443
SetHttpDerivedMethodVars(ParseHttpExtension(*method), *method, vars);
444444
EXPECT_THAT(vars.at("method_request_params"),
445-
Eq("\"project=\", request.project(), \"&\",\"instance=\", "
446-
"request.instance()"));
445+
Eq("\"project=\", internal::UrlEncode(request.project()), "
446+
"\"&\",\"instance=\", "
447+
"internal::UrlEncode(request.instance())"));
447448
EXPECT_THAT(vars.at("method_request_body"), Eq("*"));
448449
EXPECT_THAT(vars.at("method_http_verb"), Eq("Post"));
449450
EXPECT_THAT(

generator/internal/metadata_decorator_generator.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ Status MetadataDecoratorGenerator::GenerateHeader() {
123123

124124
// includes
125125
HeaderPrint("\n");
126-
HeaderLocalIncludes({vars("stub_header_path"), "google/cloud/version.h"});
126+
HeaderLocalIncludes({vars("stub_header_path"), "google/cloud/version.h",
127+
"google/cloud/internal/url_encode.h"});
127128
HeaderSystemIncludes(
128129
{HasLongrunningMethod() ? "google/longrunning/operations.grpc.pb.h" : "",
129130
"map", "memory", "string"});
@@ -346,15 +347,15 @@ future<StatusOr<google::longrunning::Operation>>
346347
google::cloud::CompletionQueue& cq,
347348
std::shared_ptr<grpc::ClientContext> context,
348349
google::longrunning::GetOperationRequest const& request) {
349-
SetMetadata(*context, "name=" + request.name());
350+
SetMetadata(*context, absl::StrCat("name=", internal::UrlEncode(request.name())));
350351
return child_->AsyncGetOperation(cq, std::move(context), request);
351352
}
352353
353354
future<Status> $metadata_class_name$::AsyncCancelOperation(
354355
google::cloud::CompletionQueue& cq,
355356
std::shared_ptr<grpc::ClientContext> context,
356357
google::longrunning::CancelOperationRequest const& request) {
357-
SetMetadata(*context, "name=" + request.name());
358+
SetMetadata(*context, absl::StrCat("name=", internal::UrlEncode(request.name())));
358359
return child_->AsyncCancelOperation(cq, std::move(context), request);
359360
}
360361
)""");

0 commit comments

Comments
 (0)