@@ -23,6 +23,7 @@ import {
23
23
CallOptions ,
24
24
Descriptors ,
25
25
ClientOptions ,
26
+ GrpcClientOptions ,
26
27
LROperation ,
27
28
PaginationCallback ,
28
29
GaxCall ,
@@ -72,7 +73,7 @@ export class ApiGatewayServiceClient {
72
73
*
73
74
* @param {object } [options] - The configuration object.
74
75
* The options accepted by the constructor are described in detail
75
- * in [this document](https://github.com/googleapis/gax-nodejs/blob/master /client-libraries.md#creating-the-client-instance).
76
+ * in [this document](https://github.com/googleapis/gax-nodejs/blob/main /client-libraries.md#creating-the-client-instance).
76
77
* The common options are:
77
78
* @param {object } [options.credentials] - Credentials object.
78
79
* @param {string } [options.credentials.client_email]
@@ -95,11 +96,10 @@ export class ApiGatewayServiceClient {
95
96
* API remote host.
96
97
* @param {gax.ClientConfig } [options.clientConfig] - Client configuration override.
97
98
* Follows the structure of {@link gapicConfig}.
98
- * @param {boolean } [options.fallback] - Use HTTP fallback mode.
99
- * In fallback mode, a special browser-compatible transport implementation is used
100
- * instead of gRPC transport. In browser context (if the `window` object is defined)
101
- * the fallback mode is enabled automatically; set `options.fallback` to `false`
102
- * if you need to override this behavior.
99
+ * @param {boolean | "rest" } [options.fallback] - Use HTTP fallback mode.
100
+ * Pass "rest" to use HTTP/1.1 REST API instead of gRPC.
101
+ * For more information, please check the
102
+ * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}.
103
103
*/
104
104
constructor ( opts ?: ClientOptions ) {
105
105
// Ensure that options include all the required fields.
@@ -199,16 +199,85 @@ export class ApiGatewayServiceClient {
199
199
} ;
200
200
201
201
const protoFilesRoot = this . _gaxModule . protobuf . Root . fromJSON ( jsonProtos ) ;
202
-
203
202
// This API contains "long-running operations", which return a
204
203
// an Operation object that allows for tracking of the operation,
205
204
// rather than holding a request open.
206
-
205
+ const lroOptions : GrpcClientOptions = {
206
+ auth : this . auth ,
207
+ grpc : 'grpc' in this . _gaxGrpc ? this . _gaxGrpc . grpc : undefined ,
208
+ } ;
209
+ if ( opts . fallback === 'rest' ) {
210
+ lroOptions . protoJson = protoFilesRoot ;
211
+ lroOptions . httpRules = [
212
+ {
213
+ selector : 'google.cloud.location.Locations.GetLocation' ,
214
+ get : '/v1/{name=projects/*/locations/*}' ,
215
+ } ,
216
+ {
217
+ selector : 'google.cloud.location.Locations.ListLocations' ,
218
+ get : '/v1/{name=projects/*}/locations' ,
219
+ } ,
220
+ {
221
+ selector : 'google.iam.v1.IAMPolicy.GetIamPolicy' ,
222
+ get : '/v1/{resource=projects/*/locations/*/gateways/*}:getIamPolicy' ,
223
+ additional_bindings : [
224
+ { get : '/v1/{resource=projects/*/locations/*/apis/*}:getIamPolicy' } ,
225
+ {
226
+ get : '/v1/{resource=projects/*/locations/*/apis/*/configs/*}:getIamPolicy' ,
227
+ } ,
228
+ ] ,
229
+ } ,
230
+ {
231
+ selector : 'google.iam.v1.IAMPolicy.SetIamPolicy' ,
232
+ post : '/v1/{resource=projects/*/locations/*/gateways/*}:setIamPolicy' ,
233
+ body : '*' ,
234
+ additional_bindings : [
235
+ {
236
+ post : '/v1/{resource=projects/*/locations/*/apis/*}:setIamPolicy' ,
237
+ body : '*' ,
238
+ } ,
239
+ {
240
+ post : '/v1/{resource=projects/*/locations/*/apis/*/configs/*}:setIamPolicy' ,
241
+ body : '*' ,
242
+ } ,
243
+ ] ,
244
+ } ,
245
+ {
246
+ selector : 'google.iam.v1.IAMPolicy.TestIamPermissions' ,
247
+ post : '/v1/{resource=projects/*/locations/*/gateways/*}:testIamPermissions' ,
248
+ body : '*' ,
249
+ additional_bindings : [
250
+ {
251
+ post : '/v1/{resource=projects/*/locations/*/apis/*}:testIamPermissions' ,
252
+ body : '*' ,
253
+ } ,
254
+ {
255
+ post : '/v1/{resource=projects/*/locations/*/apis/*/configs/*}:testIamPermissions' ,
256
+ body : '*' ,
257
+ } ,
258
+ ] ,
259
+ } ,
260
+ {
261
+ selector : 'google.longrunning.Operations.CancelOperation' ,
262
+ post : '/v1/{name=projects/*/locations/*/operations/*}:cancel' ,
263
+ body : '*' ,
264
+ } ,
265
+ {
266
+ selector : 'google.longrunning.Operations.DeleteOperation' ,
267
+ delete : '/v1/{name=projects/*/locations/*/operations/*}' ,
268
+ } ,
269
+ {
270
+ selector : 'google.longrunning.Operations.GetOperation' ,
271
+ get : '/v1/{name=projects/*/locations/*/operations/*}' ,
272
+ } ,
273
+ {
274
+ selector : 'google.longrunning.Operations.ListOperations' ,
275
+ get : '/v1/{name=projects/*/locations/*}/operations' ,
276
+ } ,
277
+ ] ;
278
+ }
207
279
this . operationsClient = this . _gaxModule
208
- . lro ( {
209
- auth : this . auth ,
210
- grpc : 'grpc' in this . _gaxGrpc ? this . _gaxGrpc . grpc : undefined ,
211
- } )
280
+ . lro ( lroOptions )
212
281
. operationsClient ( opts ) ;
213
282
const createGatewayResponse = protoFilesRoot . lookup (
214
283
'.google.cloud.apigateway.v1.Gateway'
0 commit comments