| // Copyright 2023 Google LLC | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     https://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | // Code generated by protoc-gen-go_gapic. DO NOT EDIT. | 
 |  | 
 | package functions | 
 |  | 
 | import ( | 
 | 	"bytes" | 
 | 	"context" | 
 | 	"fmt" | 
 | 	"io/ioutil" | 
 | 	"math" | 
 | 	"net/http" | 
 | 	"net/url" | 
 | 	"time" | 
 |  | 
 | 	functionspb "cloud.google.com/go/functions/apiv1/functionspb" | 
 | 	iampb "cloud.google.com/go/iam/apiv1/iampb" | 
 | 	"cloud.google.com/go/longrunning" | 
 | 	lroauto "cloud.google.com/go/longrunning/autogen" | 
 | 	longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" | 
 | 	gax "github.com/googleapis/gax-go/v2" | 
 | 	"google.golang.org/api/googleapi" | 
 | 	"google.golang.org/api/iterator" | 
 | 	"google.golang.org/api/option" | 
 | 	"google.golang.org/api/option/internaloption" | 
 | 	gtransport "google.golang.org/api/transport/grpc" | 
 | 	httptransport "google.golang.org/api/transport/http" | 
 | 	locationpb "google.golang.org/genproto/googleapis/cloud/location" | 
 | 	"google.golang.org/grpc" | 
 | 	"google.golang.org/grpc/codes" | 
 | 	"google.golang.org/grpc/metadata" | 
 | 	"google.golang.org/protobuf/encoding/protojson" | 
 | 	"google.golang.org/protobuf/proto" | 
 | ) | 
 |  | 
 | var newCloudFunctionsClientHook clientHook | 
 |  | 
 | // CloudFunctionsCallOptions contains the retry settings for each method of CloudFunctionsClient. | 
 | type CloudFunctionsCallOptions struct { | 
 | 	ListFunctions       []gax.CallOption | 
 | 	GetFunction         []gax.CallOption | 
 | 	CreateFunction      []gax.CallOption | 
 | 	UpdateFunction      []gax.CallOption | 
 | 	DeleteFunction      []gax.CallOption | 
 | 	CallFunction        []gax.CallOption | 
 | 	GenerateUploadUrl   []gax.CallOption | 
 | 	GenerateDownloadUrl []gax.CallOption | 
 | 	SetIamPolicy        []gax.CallOption | 
 | 	GetIamPolicy        []gax.CallOption | 
 | 	TestIamPermissions  []gax.CallOption | 
 | 	ListLocations       []gax.CallOption | 
 | 	GetOperation        []gax.CallOption | 
 | 	ListOperations      []gax.CallOption | 
 | } | 
 |  | 
 | func defaultCloudFunctionsGRPCClientOptions() []option.ClientOption { | 
 | 	return []option.ClientOption{ | 
 | 		internaloption.WithDefaultEndpoint("cloudfunctions.googleapis.com:443"), | 
 | 		internaloption.WithDefaultMTLSEndpoint("cloudfunctions.mtls.googleapis.com:443"), | 
 | 		internaloption.WithDefaultAudience("https://cloudfunctions.googleapis.com/"), | 
 | 		internaloption.WithDefaultScopes(DefaultAuthScopes()...), | 
 | 		internaloption.EnableJwtWithScope(), | 
 | 		option.WithGRPCDialOption(grpc.WithDefaultCallOptions( | 
 | 			grpc.MaxCallRecvMsgSize(math.MaxInt32))), | 
 | 	} | 
 | } | 
 |  | 
 | func defaultCloudFunctionsCallOptions() *CloudFunctionsCallOptions { | 
 | 	return &CloudFunctionsCallOptions{ | 
 | 		ListFunctions: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnCodes([]codes.Code{ | 
 | 					codes.Unavailable, | 
 | 					codes.DeadlineExceeded, | 
 | 				}, gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}) | 
 | 			}), | 
 | 		}, | 
 | 		GetFunction: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnCodes([]codes.Code{ | 
 | 					codes.Unavailable, | 
 | 					codes.DeadlineExceeded, | 
 | 				}, gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}) | 
 | 			}), | 
 | 		}, | 
 | 		CreateFunction: []gax.CallOption{}, | 
 | 		UpdateFunction: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnCodes([]codes.Code{ | 
 | 					codes.Unavailable, | 
 | 					codes.DeadlineExceeded, | 
 | 				}, gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}) | 
 | 			}), | 
 | 		}, | 
 | 		DeleteFunction: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnCodes([]codes.Code{ | 
 | 					codes.Unavailable, | 
 | 					codes.DeadlineExceeded, | 
 | 				}, gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}) | 
 | 			}), | 
 | 		}, | 
 | 		CallFunction:        []gax.CallOption{}, | 
 | 		GenerateUploadUrl:   []gax.CallOption{}, | 
 | 		GenerateDownloadUrl: []gax.CallOption{}, | 
 | 		SetIamPolicy:        []gax.CallOption{}, | 
 | 		GetIamPolicy:        []gax.CallOption{}, | 
 | 		TestIamPermissions:  []gax.CallOption{}, | 
 | 		ListLocations:       []gax.CallOption{}, | 
 | 		GetOperation:        []gax.CallOption{}, | 
 | 		ListOperations:      []gax.CallOption{}, | 
 | 	} | 
 | } | 
 |  | 
 | func defaultCloudFunctionsRESTCallOptions() *CloudFunctionsCallOptions { | 
 | 	return &CloudFunctionsCallOptions{ | 
 | 		ListFunctions: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnHTTPCodes(gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}, | 
 | 					http.StatusServiceUnavailable, | 
 | 					http.StatusGatewayTimeout) | 
 | 			}), | 
 | 		}, | 
 | 		GetFunction: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnHTTPCodes(gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}, | 
 | 					http.StatusServiceUnavailable, | 
 | 					http.StatusGatewayTimeout) | 
 | 			}), | 
 | 		}, | 
 | 		CreateFunction: []gax.CallOption{}, | 
 | 		UpdateFunction: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnHTTPCodes(gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}, | 
 | 					http.StatusServiceUnavailable, | 
 | 					http.StatusGatewayTimeout) | 
 | 			}), | 
 | 		}, | 
 | 		DeleteFunction: []gax.CallOption{ | 
 | 			gax.WithRetry(func() gax.Retryer { | 
 | 				return gax.OnHTTPCodes(gax.Backoff{ | 
 | 					Initial:    100 * time.Millisecond, | 
 | 					Max:        60000 * time.Millisecond, | 
 | 					Multiplier: 1.30, | 
 | 				}, | 
 | 					http.StatusServiceUnavailable, | 
 | 					http.StatusGatewayTimeout) | 
 | 			}), | 
 | 		}, | 
 | 		CallFunction:        []gax.CallOption{}, | 
 | 		GenerateUploadUrl:   []gax.CallOption{}, | 
 | 		GenerateDownloadUrl: []gax.CallOption{}, | 
 | 		SetIamPolicy:        []gax.CallOption{}, | 
 | 		GetIamPolicy:        []gax.CallOption{}, | 
 | 		TestIamPermissions:  []gax.CallOption{}, | 
 | 		ListLocations:       []gax.CallOption{}, | 
 | 		GetOperation:        []gax.CallOption{}, | 
 | 		ListOperations:      []gax.CallOption{}, | 
 | 	} | 
 | } | 
 |  | 
 | // internalCloudFunctionsClient is an interface that defines the methods available from Cloud Functions API. | 
 | type internalCloudFunctionsClient interface { | 
 | 	Close() error | 
 | 	setGoogleClientInfo(...string) | 
 | 	Connection() *grpc.ClientConn | 
 | 	ListFunctions(context.Context, *functionspb.ListFunctionsRequest, ...gax.CallOption) *CloudFunctionIterator | 
 | 	GetFunction(context.Context, *functionspb.GetFunctionRequest, ...gax.CallOption) (*functionspb.CloudFunction, error) | 
 | 	CreateFunction(context.Context, *functionspb.CreateFunctionRequest, ...gax.CallOption) (*CreateFunctionOperation, error) | 
 | 	CreateFunctionOperation(name string) *CreateFunctionOperation | 
 | 	UpdateFunction(context.Context, *functionspb.UpdateFunctionRequest, ...gax.CallOption) (*UpdateFunctionOperation, error) | 
 | 	UpdateFunctionOperation(name string) *UpdateFunctionOperation | 
 | 	DeleteFunction(context.Context, *functionspb.DeleteFunctionRequest, ...gax.CallOption) (*DeleteFunctionOperation, error) | 
 | 	DeleteFunctionOperation(name string) *DeleteFunctionOperation | 
 | 	CallFunction(context.Context, *functionspb.CallFunctionRequest, ...gax.CallOption) (*functionspb.CallFunctionResponse, error) | 
 | 	GenerateUploadUrl(context.Context, *functionspb.GenerateUploadUrlRequest, ...gax.CallOption) (*functionspb.GenerateUploadUrlResponse, error) | 
 | 	GenerateDownloadUrl(context.Context, *functionspb.GenerateDownloadUrlRequest, ...gax.CallOption) (*functionspb.GenerateDownloadUrlResponse, error) | 
 | 	SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) | 
 | 	GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) | 
 | 	TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest, ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) | 
 | 	ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator | 
 | 	GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) | 
 | 	ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator | 
 | } | 
 |  | 
 | // CloudFunctionsClient is a client for interacting with Cloud Functions API. | 
 | // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. | 
 | // | 
 | // A service that application uses to manipulate triggers and functions. | 
 | type CloudFunctionsClient struct { | 
 | 	// The internal transport-dependent client. | 
 | 	internalClient internalCloudFunctionsClient | 
 |  | 
 | 	// The call options for this service. | 
 | 	CallOptions *CloudFunctionsCallOptions | 
 |  | 
 | 	// LROClient is used internally to handle long-running operations. | 
 | 	// It is exposed so that its CallOptions can be modified if required. | 
 | 	// Users should not Close this client. | 
 | 	LROClient *lroauto.OperationsClient | 
 | } | 
 |  | 
 | // Wrapper methods routed to the internal client. | 
 |  | 
 | // Close closes the connection to the API service. The user should invoke this when | 
 | // the client is no longer required. | 
 | func (c *CloudFunctionsClient) Close() error { | 
 | 	return c.internalClient.Close() | 
 | } | 
 |  | 
 | // setGoogleClientInfo sets the name and version of the application in | 
 | // the `x-goog-api-client` header passed on each request. Intended for | 
 | // use by Google-written clients. | 
 | func (c *CloudFunctionsClient) setGoogleClientInfo(keyval ...string) { | 
 | 	c.internalClient.setGoogleClientInfo(keyval...) | 
 | } | 
 |  | 
 | // Connection returns a connection to the API service. | 
 | // | 
 | // Deprecated: Connections are now pooled so this method does not always | 
 | // return the same resource. | 
 | func (c *CloudFunctionsClient) Connection() *grpc.ClientConn { | 
 | 	return c.internalClient.Connection() | 
 | } | 
 |  | 
 | // ListFunctions returns a list of functions that belong to the requested project. | 
 | func (c *CloudFunctionsClient) ListFunctions(ctx context.Context, req *functionspb.ListFunctionsRequest, opts ...gax.CallOption) *CloudFunctionIterator { | 
 | 	return c.internalClient.ListFunctions(ctx, req, opts...) | 
 | } | 
 |  | 
 | // GetFunction returns a function with the given name from the requested project. | 
 | func (c *CloudFunctionsClient) GetFunction(ctx context.Context, req *functionspb.GetFunctionRequest, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	return c.internalClient.GetFunction(ctx, req, opts...) | 
 | } | 
 |  | 
 | // CreateFunction creates a new function. If a function with the given name already exists in | 
 | // the specified project, the long running operation returns an | 
 | // ALREADY_EXISTS error. | 
 | func (c *CloudFunctionsClient) CreateFunction(ctx context.Context, req *functionspb.CreateFunctionRequest, opts ...gax.CallOption) (*CreateFunctionOperation, error) { | 
 | 	return c.internalClient.CreateFunction(ctx, req, opts...) | 
 | } | 
 |  | 
 | // CreateFunctionOperation returns a new CreateFunctionOperation from a given name. | 
 | // The name must be that of a previously created CreateFunctionOperation, possibly from a different process. | 
 | func (c *CloudFunctionsClient) CreateFunctionOperation(name string) *CreateFunctionOperation { | 
 | 	return c.internalClient.CreateFunctionOperation(name) | 
 | } | 
 |  | 
 | // UpdateFunction updates existing function. | 
 | func (c *CloudFunctionsClient) UpdateFunction(ctx context.Context, req *functionspb.UpdateFunctionRequest, opts ...gax.CallOption) (*UpdateFunctionOperation, error) { | 
 | 	return c.internalClient.UpdateFunction(ctx, req, opts...) | 
 | } | 
 |  | 
 | // UpdateFunctionOperation returns a new UpdateFunctionOperation from a given name. | 
 | // The name must be that of a previously created UpdateFunctionOperation, possibly from a different process. | 
 | func (c *CloudFunctionsClient) UpdateFunctionOperation(name string) *UpdateFunctionOperation { | 
 | 	return c.internalClient.UpdateFunctionOperation(name) | 
 | } | 
 |  | 
 | // DeleteFunction deletes a function with the given name from the specified project. If the | 
 | // given function is used by some trigger, the trigger is updated to | 
 | // remove this function. | 
 | func (c *CloudFunctionsClient) DeleteFunction(ctx context.Context, req *functionspb.DeleteFunctionRequest, opts ...gax.CallOption) (*DeleteFunctionOperation, error) { | 
 | 	return c.internalClient.DeleteFunction(ctx, req, opts...) | 
 | } | 
 |  | 
 | // DeleteFunctionOperation returns a new DeleteFunctionOperation from a given name. | 
 | // The name must be that of a previously created DeleteFunctionOperation, possibly from a different process. | 
 | func (c *CloudFunctionsClient) DeleteFunctionOperation(name string) *DeleteFunctionOperation { | 
 | 	return c.internalClient.DeleteFunctionOperation(name) | 
 | } | 
 |  | 
 | // CallFunction synchronously invokes a deployed Cloud Function. To be used for testing | 
 | // purposes as very limited traffic is allowed. For more information on | 
 | // the actual limits, refer to | 
 | // Rate Limits (at https://cloud.google.com/functions/quotas#rate_limits). | 
 | func (c *CloudFunctionsClient) CallFunction(ctx context.Context, req *functionspb.CallFunctionRequest, opts ...gax.CallOption) (*functionspb.CallFunctionResponse, error) { | 
 | 	return c.internalClient.CallFunction(ctx, req, opts...) | 
 | } | 
 |  | 
 | // GenerateUploadUrl returns a signed URL for uploading a function source code. | 
 | // For more information about the signed URL usage see: | 
 | // https://cloud.google.com/storage/docs/access-control/signed-urls (at https://cloud.google.com/storage/docs/access-control/signed-urls). | 
 | // Once the function source code upload is complete, the used signed | 
 | // URL should be provided in CreateFunction or UpdateFunction request | 
 | // as a reference to the function source code. | 
 | // | 
 | // When uploading source code to the generated signed URL, please follow | 
 | // these restrictions: | 
 | // | 
 | //	Source file type should be a zip file. | 
 | // | 
 | //	Source file size should not exceed 100MB limit. | 
 | // | 
 | //	No credentials should be attached - the signed URLs provide access to the | 
 | //	target bucket using internal service identity; if credentials were | 
 | //	attached, the identity from the credentials would be used, but that | 
 | //	identity does not have permissions to upload files to the URL. | 
 | // | 
 | // When making an HTTP PUT request, these two headers must be specified: | 
 | // | 
 | //	content-type: application/zip | 
 | // | 
 | //	x-goog-content-length-range: 0,104857600 | 
 | // | 
 | // And this header must NOT be specified: | 
 | // | 
 | //	Authorization: Bearer YOUR_TOKEN | 
 | func (c *CloudFunctionsClient) GenerateUploadUrl(ctx context.Context, req *functionspb.GenerateUploadUrlRequest, opts ...gax.CallOption) (*functionspb.GenerateUploadUrlResponse, error) { | 
 | 	return c.internalClient.GenerateUploadUrl(ctx, req, opts...) | 
 | } | 
 |  | 
 | // GenerateDownloadUrl returns a signed URL for downloading deployed function source code. | 
 | // The URL is only valid for a limited period and must be used within | 
 | // minutes after generation. | 
 | // For more information about the signed URL usage, see: | 
 | // https://cloud.google.com/storage/docs/access-control/signed-urls (at https://cloud.google.com/storage/docs/access-control/signed-urls) | 
 | func (c *CloudFunctionsClient) GenerateDownloadUrl(ctx context.Context, req *functionspb.GenerateDownloadUrlRequest, opts ...gax.CallOption) (*functionspb.GenerateDownloadUrlResponse, error) { | 
 | 	return c.internalClient.GenerateDownloadUrl(ctx, req, opts...) | 
 | } | 
 |  | 
 | // SetIamPolicy sets the IAM access control policy on the specified function. | 
 | // Replaces any existing policy. | 
 | func (c *CloudFunctionsClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { | 
 | 	return c.internalClient.SetIamPolicy(ctx, req, opts...) | 
 | } | 
 |  | 
 | // GetIamPolicy gets the IAM access control policy for a function. | 
 | // Returns an empty policy if the function exists and does not have a policy | 
 | // set. | 
 | func (c *CloudFunctionsClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { | 
 | 	return c.internalClient.GetIamPolicy(ctx, req, opts...) | 
 | } | 
 |  | 
 | // TestIamPermissions tests the specified permissions against the IAM access control policy | 
 | // for a function. | 
 | // If the function does not exist, this returns an empty set of | 
 | // permissions, not a NOT_FOUND error. | 
 | func (c *CloudFunctionsClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { | 
 | 	return c.internalClient.TestIamPermissions(ctx, req, opts...) | 
 | } | 
 |  | 
 | // ListLocations lists information about the supported locations for this service. | 
 | func (c *CloudFunctionsClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { | 
 | 	return c.internalClient.ListLocations(ctx, req, opts...) | 
 | } | 
 |  | 
 | // GetOperation is a utility method from google.longrunning.Operations. | 
 | func (c *CloudFunctionsClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { | 
 | 	return c.internalClient.GetOperation(ctx, req, opts...) | 
 | } | 
 |  | 
 | // ListOperations is a utility method from google.longrunning.Operations. | 
 | func (c *CloudFunctionsClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { | 
 | 	return c.internalClient.ListOperations(ctx, req, opts...) | 
 | } | 
 |  | 
 | // cloudFunctionsGRPCClient is a client for interacting with Cloud Functions API over gRPC transport. | 
 | // | 
 | // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. | 
 | type cloudFunctionsGRPCClient struct { | 
 | 	// Connection pool of gRPC connections to the service. | 
 | 	connPool gtransport.ConnPool | 
 |  | 
 | 	// flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE | 
 | 	disableDeadlines bool | 
 |  | 
 | 	// Points back to the CallOptions field of the containing CloudFunctionsClient | 
 | 	CallOptions **CloudFunctionsCallOptions | 
 |  | 
 | 	// The gRPC API client. | 
 | 	cloudFunctionsClient functionspb.CloudFunctionsServiceClient | 
 |  | 
 | 	// LROClient is used internally to handle long-running operations. | 
 | 	// It is exposed so that its CallOptions can be modified if required. | 
 | 	// Users should not Close this client. | 
 | 	LROClient **lroauto.OperationsClient | 
 |  | 
 | 	operationsClient longrunningpb.OperationsClient | 
 |  | 
 | 	locationsClient locationpb.LocationsClient | 
 |  | 
 | 	// The x-goog-* metadata to be sent with each request. | 
 | 	xGoogMetadata metadata.MD | 
 | } | 
 |  | 
 | // NewCloudFunctionsClient creates a new cloud functions service client based on gRPC. | 
 | // The returned client must be Closed when it is done being used to clean up its underlying connections. | 
 | // | 
 | // A service that application uses to manipulate triggers and functions. | 
 | func NewCloudFunctionsClient(ctx context.Context, opts ...option.ClientOption) (*CloudFunctionsClient, error) { | 
 | 	clientOpts := defaultCloudFunctionsGRPCClientOptions() | 
 | 	if newCloudFunctionsClientHook != nil { | 
 | 		hookOpts, err := newCloudFunctionsClientHook(ctx, clientHookParams{}) | 
 | 		if err != nil { | 
 | 			return nil, err | 
 | 		} | 
 | 		clientOpts = append(clientOpts, hookOpts...) | 
 | 	} | 
 |  | 
 | 	disableDeadlines, err := checkDisableDeadlines() | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	client := CloudFunctionsClient{CallOptions: defaultCloudFunctionsCallOptions()} | 
 |  | 
 | 	c := &cloudFunctionsGRPCClient{ | 
 | 		connPool:             connPool, | 
 | 		disableDeadlines:     disableDeadlines, | 
 | 		cloudFunctionsClient: functionspb.NewCloudFunctionsServiceClient(connPool), | 
 | 		CallOptions:          &client.CallOptions, | 
 | 		operationsClient:     longrunningpb.NewOperationsClient(connPool), | 
 | 		locationsClient:      locationpb.NewLocationsClient(connPool), | 
 | 	} | 
 | 	c.setGoogleClientInfo() | 
 |  | 
 | 	client.internalClient = c | 
 |  | 
 | 	client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) | 
 | 	if err != nil { | 
 | 		// This error "should not happen", since we are just reusing old connection pool | 
 | 		// and never actually need to dial. | 
 | 		// If this does happen, we could leak connp. However, we cannot close conn: | 
 | 		// If the user invoked the constructor with option.WithGRPCConn, | 
 | 		// we would close a connection that's still in use. | 
 | 		// TODO: investigate error conditions. | 
 | 		return nil, err | 
 | 	} | 
 | 	c.LROClient = &client.LROClient | 
 | 	return &client, nil | 
 | } | 
 |  | 
 | // Connection returns a connection to the API service. | 
 | // | 
 | // Deprecated: Connections are now pooled so this method does not always | 
 | // return the same resource. | 
 | func (c *cloudFunctionsGRPCClient) Connection() *grpc.ClientConn { | 
 | 	return c.connPool.Conn() | 
 | } | 
 |  | 
 | // setGoogleClientInfo sets the name and version of the application in | 
 | // the `x-goog-api-client` header passed on each request. Intended for | 
 | // use by Google-written clients. | 
 | func (c *cloudFunctionsGRPCClient) setGoogleClientInfo(keyval ...string) { | 
 | 	kv := append([]string{"gl-go", versionGo()}, keyval...) | 
 | 	kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) | 
 | 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) | 
 | } | 
 |  | 
 | // Close closes the connection to the API service. The user should invoke this when | 
 | // the client is no longer required. | 
 | func (c *cloudFunctionsGRPCClient) Close() error { | 
 | 	return c.connPool.Close() | 
 | } | 
 |  | 
 | // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. | 
 | type cloudFunctionsRESTClient struct { | 
 | 	// The http endpoint to connect to. | 
 | 	endpoint string | 
 |  | 
 | 	// The http client. | 
 | 	httpClient *http.Client | 
 |  | 
 | 	// LROClient is used internally to handle long-running operations. | 
 | 	// It is exposed so that its CallOptions can be modified if required. | 
 | 	// Users should not Close this client. | 
 | 	LROClient **lroauto.OperationsClient | 
 |  | 
 | 	// The x-goog-* metadata to be sent with each request. | 
 | 	xGoogMetadata metadata.MD | 
 |  | 
 | 	// Points back to the CallOptions field of the containing CloudFunctionsClient | 
 | 	CallOptions **CloudFunctionsCallOptions | 
 | } | 
 |  | 
 | // NewCloudFunctionsRESTClient creates a new cloud functions service rest client. | 
 | // | 
 | // A service that application uses to manipulate triggers and functions. | 
 | func NewCloudFunctionsRESTClient(ctx context.Context, opts ...option.ClientOption) (*CloudFunctionsClient, error) { | 
 | 	clientOpts := append(defaultCloudFunctionsRESTClientOptions(), opts...) | 
 | 	httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	callOpts := defaultCloudFunctionsRESTCallOptions() | 
 | 	c := &cloudFunctionsRESTClient{ | 
 | 		endpoint:    endpoint, | 
 | 		httpClient:  httpClient, | 
 | 		CallOptions: &callOpts, | 
 | 	} | 
 | 	c.setGoogleClientInfo() | 
 |  | 
 | 	lroOpts := []option.ClientOption{ | 
 | 		option.WithHTTPClient(httpClient), | 
 | 		option.WithEndpoint(endpoint), | 
 | 	} | 
 | 	opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	c.LROClient = &opClient | 
 |  | 
 | 	return &CloudFunctionsClient{internalClient: c, CallOptions: callOpts}, nil | 
 | } | 
 |  | 
 | func defaultCloudFunctionsRESTClientOptions() []option.ClientOption { | 
 | 	return []option.ClientOption{ | 
 | 		internaloption.WithDefaultEndpoint("https://cloudfunctions.googleapis.com"), | 
 | 		internaloption.WithDefaultMTLSEndpoint("https://cloudfunctions.mtls.googleapis.com"), | 
 | 		internaloption.WithDefaultAudience("https://cloudfunctions.googleapis.com/"), | 
 | 		internaloption.WithDefaultScopes(DefaultAuthScopes()...), | 
 | 	} | 
 | } | 
 |  | 
 | // setGoogleClientInfo sets the name and version of the application in | 
 | // the `x-goog-api-client` header passed on each request. Intended for | 
 | // use by Google-written clients. | 
 | func (c *cloudFunctionsRESTClient) setGoogleClientInfo(keyval ...string) { | 
 | 	kv := append([]string{"gl-go", versionGo()}, keyval...) | 
 | 	kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") | 
 | 	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) | 
 | } | 
 |  | 
 | // Close closes the connection to the API service. The user should invoke this when | 
 | // the client is no longer required. | 
 | func (c *cloudFunctionsRESTClient) Close() error { | 
 | 	// Replace httpClient with nil to force cleanup. | 
 | 	c.httpClient = nil | 
 | 	return nil | 
 | } | 
 |  | 
 | // Connection returns a connection to the API service. | 
 | // | 
 | // Deprecated: This method always returns nil. | 
 | func (c *cloudFunctionsRESTClient) Connection() *grpc.ClientConn { | 
 | 	return nil | 
 | } | 
 | func (c *cloudFunctionsGRPCClient) ListFunctions(ctx context.Context, req *functionspb.ListFunctionsRequest, opts ...gax.CallOption) *CloudFunctionIterator { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).ListFunctions[0:len((*c.CallOptions).ListFunctions):len((*c.CallOptions).ListFunctions)], opts...) | 
 | 	it := &CloudFunctionIterator{} | 
 | 	req = proto.Clone(req).(*functionspb.ListFunctionsRequest) | 
 | 	it.InternalFetch = func(pageSize int, pageToken string) ([]*functionspb.CloudFunction, string, error) { | 
 | 		resp := &functionspb.ListFunctionsResponse{} | 
 | 		if pageToken != "" { | 
 | 			req.PageToken = pageToken | 
 | 		} | 
 | 		if pageSize > math.MaxInt32 { | 
 | 			req.PageSize = math.MaxInt32 | 
 | 		} else if pageSize != 0 { | 
 | 			req.PageSize = int32(pageSize) | 
 | 		} | 
 | 		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 			var err error | 
 | 			resp, err = c.cloudFunctionsClient.ListFunctions(ctx, req, settings.GRPC...) | 
 | 			return err | 
 | 		}, opts...) | 
 | 		if err != nil { | 
 | 			return nil, "", err | 
 | 		} | 
 |  | 
 | 		it.Response = resp | 
 | 		return resp.GetFunctions(), resp.GetNextPageToken(), nil | 
 | 	} | 
 | 	fetch := func(pageSize int, pageToken string) (string, error) { | 
 | 		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
 | 		if err != nil { | 
 | 			return "", err | 
 | 		} | 
 | 		it.items = append(it.items, items...) | 
 | 		return nextPageToken, nil | 
 | 	} | 
 |  | 
 | 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
 | 	it.pageInfo.MaxSize = int(req.GetPageSize()) | 
 | 	it.pageInfo.Token = req.GetPageToken() | 
 |  | 
 | 	return it | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) GetFunction(ctx context.Context, req *functionspb.GetFunctionRequest, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { | 
 | 		cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) | 
 | 		defer cancel() | 
 | 		ctx = cctx | 
 | 	} | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).GetFunction[0:len((*c.CallOptions).GetFunction):len((*c.CallOptions).GetFunction)], opts...) | 
 | 	var resp *functionspb.CloudFunction | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.GetFunction(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) CreateFunction(ctx context.Context, req *functionspb.CreateFunctionRequest, opts ...gax.CallOption) (*CreateFunctionOperation, error) { | 
 | 	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { | 
 | 		cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) | 
 | 		defer cancel() | 
 | 		ctx = cctx | 
 | 	} | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).CreateFunction[0:len((*c.CallOptions).CreateFunction):len((*c.CallOptions).CreateFunction)], opts...) | 
 | 	var resp *longrunningpb.Operation | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.CreateFunction(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &CreateFunctionOperation{ | 
 | 		lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
 | 	}, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) UpdateFunction(ctx context.Context, req *functionspb.UpdateFunctionRequest, opts ...gax.CallOption) (*UpdateFunctionOperation, error) { | 
 | 	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { | 
 | 		cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) | 
 | 		defer cancel() | 
 | 		ctx = cctx | 
 | 	} | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "function.name", url.QueryEscape(req.GetFunction().GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).UpdateFunction[0:len((*c.CallOptions).UpdateFunction):len((*c.CallOptions).UpdateFunction)], opts...) | 
 | 	var resp *longrunningpb.Operation | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.UpdateFunction(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &UpdateFunctionOperation{ | 
 | 		lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
 | 	}, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) DeleteFunction(ctx context.Context, req *functionspb.DeleteFunctionRequest, opts ...gax.CallOption) (*DeleteFunctionOperation, error) { | 
 | 	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { | 
 | 		cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) | 
 | 		defer cancel() | 
 | 		ctx = cctx | 
 | 	} | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).DeleteFunction[0:len((*c.CallOptions).DeleteFunction):len((*c.CallOptions).DeleteFunction)], opts...) | 
 | 	var resp *longrunningpb.Operation | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.DeleteFunction(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &DeleteFunctionOperation{ | 
 | 		lro: longrunning.InternalNewOperation(*c.LROClient, resp), | 
 | 	}, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) CallFunction(ctx context.Context, req *functionspb.CallFunctionRequest, opts ...gax.CallOption) (*functionspb.CallFunctionResponse, error) { | 
 | 	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { | 
 | 		cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) | 
 | 		defer cancel() | 
 | 		ctx = cctx | 
 | 	} | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).CallFunction[0:len((*c.CallOptions).CallFunction):len((*c.CallOptions).CallFunction)], opts...) | 
 | 	var resp *functionspb.CallFunctionResponse | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.CallFunction(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) GenerateUploadUrl(ctx context.Context, req *functionspb.GenerateUploadUrlRequest, opts ...gax.CallOption) (*functionspb.GenerateUploadUrlResponse, error) { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).GenerateUploadUrl[0:len((*c.CallOptions).GenerateUploadUrl):len((*c.CallOptions).GenerateUploadUrl)], opts...) | 
 | 	var resp *functionspb.GenerateUploadUrlResponse | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.GenerateUploadUrl(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) GenerateDownloadUrl(ctx context.Context, req *functionspb.GenerateDownloadUrlRequest, opts ...gax.CallOption) (*functionspb.GenerateDownloadUrlResponse, error) { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).GenerateDownloadUrl[0:len((*c.CallOptions).GenerateDownloadUrl):len((*c.CallOptions).GenerateDownloadUrl)], opts...) | 
 | 	var resp *functionspb.GenerateDownloadUrlResponse | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.GenerateDownloadUrl(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) | 
 | 	var resp *iampb.Policy | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.SetIamPolicy(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) | 
 | 	var resp *iampb.Policy | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.GetIamPolicy(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) | 
 | 	var resp *iampb.TestIamPermissionsResponse | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.cloudFunctionsClient.TestIamPermissions(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) | 
 | 	it := &LocationIterator{} | 
 | 	req = proto.Clone(req).(*locationpb.ListLocationsRequest) | 
 | 	it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { | 
 | 		resp := &locationpb.ListLocationsResponse{} | 
 | 		if pageToken != "" { | 
 | 			req.PageToken = pageToken | 
 | 		} | 
 | 		if pageSize > math.MaxInt32 { | 
 | 			req.PageSize = math.MaxInt32 | 
 | 		} else if pageSize != 0 { | 
 | 			req.PageSize = int32(pageSize) | 
 | 		} | 
 | 		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 			var err error | 
 | 			resp, err = c.locationsClient.ListLocations(ctx, req, settings.GRPC...) | 
 | 			return err | 
 | 		}, opts...) | 
 | 		if err != nil { | 
 | 			return nil, "", err | 
 | 		} | 
 |  | 
 | 		it.Response = resp | 
 | 		return resp.GetLocations(), resp.GetNextPageToken(), nil | 
 | 	} | 
 | 	fetch := func(pageSize int, pageToken string) (string, error) { | 
 | 		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
 | 		if err != nil { | 
 | 			return "", err | 
 | 		} | 
 | 		it.items = append(it.items, items...) | 
 | 		return nextPageToken, nil | 
 | 	} | 
 |  | 
 | 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
 | 	it.pageInfo.MaxSize = int(req.GetPageSize()) | 
 | 	it.pageInfo.Token = req.GetPageToken() | 
 |  | 
 | 	return it | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata, md) | 
 | 	opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) | 
 | 	var resp *longrunningpb.Operation | 
 | 	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		var err error | 
 | 		resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) | 
 | 		return err | 
 | 	}, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | func (c *cloudFunctionsGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { | 
 | 	ctx = insertMetadata(ctx, c.xGoogMetadata) | 
 | 	opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) | 
 | 	it := &OperationIterator{} | 
 | 	req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) | 
 | 	it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { | 
 | 		resp := &longrunningpb.ListOperationsResponse{} | 
 | 		if pageToken != "" { | 
 | 			req.PageToken = pageToken | 
 | 		} | 
 | 		if pageSize > math.MaxInt32 { | 
 | 			req.PageSize = math.MaxInt32 | 
 | 		} else if pageSize != 0 { | 
 | 			req.PageSize = int32(pageSize) | 
 | 		} | 
 | 		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 			var err error | 
 | 			resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) | 
 | 			return err | 
 | 		}, opts...) | 
 | 		if err != nil { | 
 | 			return nil, "", err | 
 | 		} | 
 |  | 
 | 		it.Response = resp | 
 | 		return resp.GetOperations(), resp.GetNextPageToken(), nil | 
 | 	} | 
 | 	fetch := func(pageSize int, pageToken string) (string, error) { | 
 | 		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
 | 		if err != nil { | 
 | 			return "", err | 
 | 		} | 
 | 		it.items = append(it.items, items...) | 
 | 		return nextPageToken, nil | 
 | 	} | 
 |  | 
 | 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
 | 	it.pageInfo.MaxSize = int(req.GetPageSize()) | 
 | 	it.pageInfo.Token = req.GetPageToken() | 
 |  | 
 | 	return it | 
 | } | 
 |  | 
 | // ListFunctions returns a list of functions that belong to the requested project. | 
 | func (c *cloudFunctionsRESTClient) ListFunctions(ctx context.Context, req *functionspb.ListFunctionsRequest, opts ...gax.CallOption) *CloudFunctionIterator { | 
 | 	it := &CloudFunctionIterator{} | 
 | 	req = proto.Clone(req).(*functionspb.ListFunctionsRequest) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	it.InternalFetch = func(pageSize int, pageToken string) ([]*functionspb.CloudFunction, string, error) { | 
 | 		resp := &functionspb.ListFunctionsResponse{} | 
 | 		if pageToken != "" { | 
 | 			req.PageToken = pageToken | 
 | 		} | 
 | 		if pageSize > math.MaxInt32 { | 
 | 			req.PageSize = math.MaxInt32 | 
 | 		} else if pageSize != 0 { | 
 | 			req.PageSize = int32(pageSize) | 
 | 		} | 
 | 		baseUrl, err := url.Parse(c.endpoint) | 
 | 		if err != nil { | 
 | 			return nil, "", err | 
 | 		} | 
 | 		baseUrl.Path += fmt.Sprintf("/v1/%v/functions", req.GetParent()) | 
 |  | 
 | 		params := url.Values{} | 
 | 		params.Add("$alt", "json;enum-encoding=int") | 
 | 		if req.GetPageSize() != 0 { | 
 | 			params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) | 
 | 		} | 
 | 		if req.GetPageToken() != "" { | 
 | 			params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) | 
 | 		} | 
 |  | 
 | 		baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 		// Build HTTP headers from client and context metadata. | 
 | 		headers := buildHeaders(ctx, c.xGoogMetadata, metadata.Pairs("Content-Type", "application/json")) | 
 | 		e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 			if settings.Path != "" { | 
 | 				baseUrl.Path = settings.Path | 
 | 			} | 
 | 			httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			httpReq.Header = headers | 
 |  | 
 | 			httpRsp, err := c.httpClient.Do(httpReq) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			defer httpRsp.Body.Close() | 
 |  | 
 | 			if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 				return err | 
 | 			} | 
 |  | 
 | 			buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 |  | 
 | 			if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 				return maybeUnknownEnum(err) | 
 | 			} | 
 |  | 
 | 			return nil | 
 | 		}, opts...) | 
 | 		if e != nil { | 
 | 			return nil, "", e | 
 | 		} | 
 | 		it.Response = resp | 
 | 		return resp.GetFunctions(), resp.GetNextPageToken(), nil | 
 | 	} | 
 |  | 
 | 	fetch := func(pageSize int, pageToken string) (string, error) { | 
 | 		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
 | 		if err != nil { | 
 | 			return "", err | 
 | 		} | 
 | 		it.items = append(it.items, items...) | 
 | 		return nextPageToken, nil | 
 | 	} | 
 |  | 
 | 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
 | 	it.pageInfo.MaxSize = int(req.GetPageSize()) | 
 | 	it.pageInfo.Token = req.GetPageToken() | 
 |  | 
 | 	return it | 
 | } | 
 |  | 
 | // GetFunction returns a function with the given name from the requested project. | 
 | func (c *cloudFunctionsRESTClient) GetFunction(ctx context.Context, req *functionspb.GetFunctionRequest, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).GetFunction[0:len((*c.CallOptions).GetFunction):len((*c.CallOptions).GetFunction)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &functionspb.CloudFunction{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // CreateFunction creates a new function. If a function with the given name already exists in | 
 | // the specified project, the long running operation returns an | 
 | // ALREADY_EXISTS error. | 
 | func (c *cloudFunctionsRESTClient) CreateFunction(ctx context.Context, req *functionspb.CreateFunctionRequest, opts ...gax.CallOption) (*CreateFunctionOperation, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	body := req.GetFunction() | 
 | 	jsonReq, err := m.Marshal(body) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v/functions", req.GetLocation()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &longrunningpb.Operation{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 |  | 
 | 	override := fmt.Sprintf("/v1/%s", resp.GetName()) | 
 | 	return &CreateFunctionOperation{ | 
 | 		lro:      longrunning.InternalNewOperation(*c.LROClient, resp), | 
 | 		pollPath: override, | 
 | 	}, nil | 
 | } | 
 |  | 
 | // UpdateFunction updates existing function. | 
 | func (c *cloudFunctionsRESTClient) UpdateFunction(ctx context.Context, req *functionspb.UpdateFunctionRequest, opts ...gax.CallOption) (*UpdateFunctionOperation, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	body := req.GetFunction() | 
 | 	jsonReq, err := m.Marshal(body) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetFunction().GetName()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 | 	if req.GetUpdateMask() != nil { | 
 | 		updateMask, err := protojson.Marshal(req.GetUpdateMask()) | 
 | 		if err != nil { | 
 | 			return nil, err | 
 | 		} | 
 | 		params.Add("updateMask", string(updateMask)) | 
 | 	} | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "function.name", url.QueryEscape(req.GetFunction().GetName()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &longrunningpb.Operation{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 |  | 
 | 	override := fmt.Sprintf("/v1/%s", resp.GetName()) | 
 | 	return &UpdateFunctionOperation{ | 
 | 		lro:      longrunning.InternalNewOperation(*c.LROClient, resp), | 
 | 		pollPath: override, | 
 | 	}, nil | 
 | } | 
 |  | 
 | // DeleteFunction deletes a function with the given name from the specified project. If the | 
 | // given function is used by some trigger, the trigger is updated to | 
 | // remove this function. | 
 | func (c *cloudFunctionsRESTClient) DeleteFunction(ctx context.Context, req *functionspb.DeleteFunctionRequest, opts ...gax.CallOption) (*DeleteFunctionOperation, error) { | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &longrunningpb.Operation{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 |  | 
 | 	override := fmt.Sprintf("/v1/%s", resp.GetName()) | 
 | 	return &DeleteFunctionOperation{ | 
 | 		lro:      longrunning.InternalNewOperation(*c.LROClient, resp), | 
 | 		pollPath: override, | 
 | 	}, nil | 
 | } | 
 |  | 
 | // CallFunction synchronously invokes a deployed Cloud Function. To be used for testing | 
 | // purposes as very limited traffic is allowed. For more information on | 
 | // the actual limits, refer to | 
 | // Rate Limits (at https://cloud.google.com/functions/quotas#rate_limits). | 
 | func (c *cloudFunctionsRESTClient) CallFunction(ctx context.Context, req *functionspb.CallFunctionRequest, opts ...gax.CallOption) (*functionspb.CallFunctionResponse, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	jsonReq, err := m.Marshal(req) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v:call", req.GetName()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).CallFunction[0:len((*c.CallOptions).CallFunction):len((*c.CallOptions).CallFunction)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &functionspb.CallFunctionResponse{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // GenerateUploadUrl returns a signed URL for uploading a function source code. | 
 | // For more information about the signed URL usage see: | 
 | // https://cloud.google.com/storage/docs/access-control/signed-urls (at https://cloud.google.com/storage/docs/access-control/signed-urls). | 
 | // Once the function source code upload is complete, the used signed | 
 | // URL should be provided in CreateFunction or UpdateFunction request | 
 | // as a reference to the function source code. | 
 | // | 
 | // When uploading source code to the generated signed URL, please follow | 
 | // these restrictions: | 
 | // | 
 | //	Source file type should be a zip file. | 
 | // | 
 | //	Source file size should not exceed 100MB limit. | 
 | // | 
 | //	No credentials should be attached - the signed URLs provide access to the | 
 | //	target bucket using internal service identity; if credentials were | 
 | //	attached, the identity from the credentials would be used, but that | 
 | //	identity does not have permissions to upload files to the URL. | 
 | // | 
 | // When making an HTTP PUT request, these two headers must be specified: | 
 | // | 
 | //	content-type: application/zip | 
 | // | 
 | //	x-goog-content-length-range: 0,104857600 | 
 | // | 
 | // And this header must NOT be specified: | 
 | // | 
 | //	Authorization: Bearer YOUR_TOKEN | 
 | func (c *cloudFunctionsRESTClient) GenerateUploadUrl(ctx context.Context, req *functionspb.GenerateUploadUrlRequest, opts ...gax.CallOption) (*functionspb.GenerateUploadUrlResponse, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	jsonReq, err := m.Marshal(req) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v/functions:generateUploadUrl", req.GetParent()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).GenerateUploadUrl[0:len((*c.CallOptions).GenerateUploadUrl):len((*c.CallOptions).GenerateUploadUrl)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &functionspb.GenerateUploadUrlResponse{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // GenerateDownloadUrl returns a signed URL for downloading deployed function source code. | 
 | // The URL is only valid for a limited period and must be used within | 
 | // minutes after generation. | 
 | // For more information about the signed URL usage, see: | 
 | // https://cloud.google.com/storage/docs/access-control/signed-urls (at https://cloud.google.com/storage/docs/access-control/signed-urls) | 
 | func (c *cloudFunctionsRESTClient) GenerateDownloadUrl(ctx context.Context, req *functionspb.GenerateDownloadUrlRequest, opts ...gax.CallOption) (*functionspb.GenerateDownloadUrlResponse, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	jsonReq, err := m.Marshal(req) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v:generateDownloadUrl", req.GetName()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).GenerateDownloadUrl[0:len((*c.CallOptions).GenerateDownloadUrl):len((*c.CallOptions).GenerateDownloadUrl)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &functionspb.GenerateDownloadUrlResponse{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // SetIamPolicy sets the IAM access control policy on the specified function. | 
 | // Replaces any existing policy. | 
 | func (c *cloudFunctionsRESTClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	jsonReq, err := m.Marshal(req) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v:setIamPolicy", req.GetResource()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &iampb.Policy{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // GetIamPolicy gets the IAM access control policy for a function. | 
 | // Returns an empty policy if the function exists and does not have a policy | 
 | // set. | 
 | func (c *cloudFunctionsRESTClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v:getIamPolicy", req.GetResource()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 | 	if req.GetOptions().GetRequestedPolicyVersion() != 0 { | 
 | 		params.Add("options.requestedPolicyVersion", fmt.Sprintf("%v", req.GetOptions().GetRequestedPolicyVersion())) | 
 | 	} | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &iampb.Policy{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // TestIamPermissions tests the specified permissions against the IAM access control policy | 
 | // for a function. | 
 | // If the function does not exist, this returns an empty set of | 
 | // permissions, not a NOT_FOUND error. | 
 | func (c *cloudFunctionsRESTClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { | 
 | 	m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} | 
 | 	jsonReq, err := m.Marshal(req) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 |  | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v:testIamPermissions", req.GetResource()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &iampb.TestIamPermissionsResponse{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // ListLocations lists information about the supported locations for this service. | 
 | func (c *cloudFunctionsRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { | 
 | 	it := &LocationIterator{} | 
 | 	req = proto.Clone(req).(*locationpb.ListLocationsRequest) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { | 
 | 		resp := &locationpb.ListLocationsResponse{} | 
 | 		if pageToken != "" { | 
 | 			req.PageToken = pageToken | 
 | 		} | 
 | 		if pageSize > math.MaxInt32 { | 
 | 			req.PageSize = math.MaxInt32 | 
 | 		} else if pageSize != 0 { | 
 | 			req.PageSize = int32(pageSize) | 
 | 		} | 
 | 		baseUrl, err := url.Parse(c.endpoint) | 
 | 		if err != nil { | 
 | 			return nil, "", err | 
 | 		} | 
 | 		baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) | 
 |  | 
 | 		params := url.Values{} | 
 | 		params.Add("$alt", "json;enum-encoding=int") | 
 | 		if req.GetFilter() != "" { | 
 | 			params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) | 
 | 		} | 
 | 		if req.GetPageSize() != 0 { | 
 | 			params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) | 
 | 		} | 
 | 		if req.GetPageToken() != "" { | 
 | 			params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) | 
 | 		} | 
 |  | 
 | 		baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 		// Build HTTP headers from client and context metadata. | 
 | 		headers := buildHeaders(ctx, c.xGoogMetadata, metadata.Pairs("Content-Type", "application/json")) | 
 | 		e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 			if settings.Path != "" { | 
 | 				baseUrl.Path = settings.Path | 
 | 			} | 
 | 			httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			httpReq.Header = headers | 
 |  | 
 | 			httpRsp, err := c.httpClient.Do(httpReq) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			defer httpRsp.Body.Close() | 
 |  | 
 | 			if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 				return err | 
 | 			} | 
 |  | 
 | 			buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 |  | 
 | 			if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 				return maybeUnknownEnum(err) | 
 | 			} | 
 |  | 
 | 			return nil | 
 | 		}, opts...) | 
 | 		if e != nil { | 
 | 			return nil, "", e | 
 | 		} | 
 | 		it.Response = resp | 
 | 		return resp.GetLocations(), resp.GetNextPageToken(), nil | 
 | 	} | 
 |  | 
 | 	fetch := func(pageSize int, pageToken string) (string, error) { | 
 | 		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
 | 		if err != nil { | 
 | 			return "", err | 
 | 		} | 
 | 		it.items = append(it.items, items...) | 
 | 		return nextPageToken, nil | 
 | 	} | 
 |  | 
 | 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
 | 	it.pageInfo.MaxSize = int(req.GetPageSize()) | 
 | 	it.pageInfo.Token = req.GetPageToken() | 
 |  | 
 | 	return it | 
 | } | 
 |  | 
 | // GetOperation is a utility method from google.longrunning.Operations. | 
 | func (c *cloudFunctionsRESTClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { | 
 | 	baseUrl, err := url.Parse(c.endpoint) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) | 
 |  | 
 | 	params := url.Values{} | 
 | 	params.Add("$alt", "json;enum-encoding=int") | 
 |  | 
 | 	baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 	// Build HTTP headers from client and context metadata. | 
 | 	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) | 
 |  | 
 | 	headers := buildHeaders(ctx, c.xGoogMetadata, md, metadata.Pairs("Content-Type", "application/json")) | 
 | 	opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	resp := &longrunningpb.Operation{} | 
 | 	e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 		if settings.Path != "" { | 
 | 			baseUrl.Path = settings.Path | 
 | 		} | 
 | 		httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		httpReq = httpReq.WithContext(ctx) | 
 | 		httpReq.Header = headers | 
 |  | 
 | 		httpRsp, err := c.httpClient.Do(httpReq) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 | 		defer httpRsp.Body.Close() | 
 |  | 
 | 		if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 		if err != nil { | 
 | 			return err | 
 | 		} | 
 |  | 
 | 		if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 			return maybeUnknownEnum(err) | 
 | 		} | 
 |  | 
 | 		return nil | 
 | 	}, opts...) | 
 | 	if e != nil { | 
 | 		return nil, e | 
 | 	} | 
 | 	return resp, nil | 
 | } | 
 |  | 
 | // ListOperations is a utility method from google.longrunning.Operations. | 
 | func (c *cloudFunctionsRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { | 
 | 	it := &OperationIterator{} | 
 | 	req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) | 
 | 	unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} | 
 | 	it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { | 
 | 		resp := &longrunningpb.ListOperationsResponse{} | 
 | 		if pageToken != "" { | 
 | 			req.PageToken = pageToken | 
 | 		} | 
 | 		if pageSize > math.MaxInt32 { | 
 | 			req.PageSize = math.MaxInt32 | 
 | 		} else if pageSize != 0 { | 
 | 			req.PageSize = int32(pageSize) | 
 | 		} | 
 | 		baseUrl, err := url.Parse(c.endpoint) | 
 | 		if err != nil { | 
 | 			return nil, "", err | 
 | 		} | 
 | 		baseUrl.Path += fmt.Sprintf("/v1/operations") | 
 |  | 
 | 		params := url.Values{} | 
 | 		params.Add("$alt", "json;enum-encoding=int") | 
 | 		if req.GetFilter() != "" { | 
 | 			params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) | 
 | 		} | 
 | 		if req.GetName() != "" { | 
 | 			params.Add("name", fmt.Sprintf("%v", req.GetName())) | 
 | 		} | 
 | 		if req.GetPageSize() != 0 { | 
 | 			params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) | 
 | 		} | 
 | 		if req.GetPageToken() != "" { | 
 | 			params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) | 
 | 		} | 
 |  | 
 | 		baseUrl.RawQuery = params.Encode() | 
 |  | 
 | 		// Build HTTP headers from client and context metadata. | 
 | 		headers := buildHeaders(ctx, c.xGoogMetadata, metadata.Pairs("Content-Type", "application/json")) | 
 | 		e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { | 
 | 			if settings.Path != "" { | 
 | 				baseUrl.Path = settings.Path | 
 | 			} | 
 | 			httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			httpReq.Header = headers | 
 |  | 
 | 			httpRsp, err := c.httpClient.Do(httpReq) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 | 			defer httpRsp.Body.Close() | 
 |  | 
 | 			if err = googleapi.CheckResponse(httpRsp); err != nil { | 
 | 				return err | 
 | 			} | 
 |  | 
 | 			buf, err := ioutil.ReadAll(httpRsp.Body) | 
 | 			if err != nil { | 
 | 				return err | 
 | 			} | 
 |  | 
 | 			if err := unm.Unmarshal(buf, resp); err != nil { | 
 | 				return maybeUnknownEnum(err) | 
 | 			} | 
 |  | 
 | 			return nil | 
 | 		}, opts...) | 
 | 		if e != nil { | 
 | 			return nil, "", e | 
 | 		} | 
 | 		it.Response = resp | 
 | 		return resp.GetOperations(), resp.GetNextPageToken(), nil | 
 | 	} | 
 |  | 
 | 	fetch := func(pageSize int, pageToken string) (string, error) { | 
 | 		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) | 
 | 		if err != nil { | 
 | 			return "", err | 
 | 		} | 
 | 		it.items = append(it.items, items...) | 
 | 		return nextPageToken, nil | 
 | 	} | 
 |  | 
 | 	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) | 
 | 	it.pageInfo.MaxSize = int(req.GetPageSize()) | 
 | 	it.pageInfo.Token = req.GetPageToken() | 
 |  | 
 | 	return it | 
 | } | 
 |  | 
 | // CreateFunctionOperation manages a long-running operation from CreateFunction. | 
 | type CreateFunctionOperation struct { | 
 | 	lro      *longrunning.Operation | 
 | 	pollPath string | 
 | } | 
 |  | 
 | // CreateFunctionOperation returns a new CreateFunctionOperation from a given name. | 
 | // The name must be that of a previously created CreateFunctionOperation, possibly from a different process. | 
 | func (c *cloudFunctionsGRPCClient) CreateFunctionOperation(name string) *CreateFunctionOperation { | 
 | 	return &CreateFunctionOperation{ | 
 | 		lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
 | 	} | 
 | } | 
 |  | 
 | // CreateFunctionOperation returns a new CreateFunctionOperation from a given name. | 
 | // The name must be that of a previously created CreateFunctionOperation, possibly from a different process. | 
 | func (c *cloudFunctionsRESTClient) CreateFunctionOperation(name string) *CreateFunctionOperation { | 
 | 	override := fmt.Sprintf("/v1/%s", name) | 
 | 	return &CreateFunctionOperation{ | 
 | 		lro:      longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
 | 		pollPath: override, | 
 | 	} | 
 | } | 
 |  | 
 | // Wait blocks until the long-running operation is completed, returning the response and any errors encountered. | 
 | // | 
 | // See documentation of Poll for error-handling information. | 
 | func (op *CreateFunctionOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) | 
 | 	var resp functionspb.CloudFunction | 
 | 	if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &resp, nil | 
 | } | 
 |  | 
 | // Poll fetches the latest state of the long-running operation. | 
 | // | 
 | // Poll also fetches the latest metadata, which can be retrieved by Metadata. | 
 | // | 
 | // If Poll fails, the error is returned and op is unmodified. If Poll succeeds and | 
 | // the operation has completed with failure, the error is returned and op.Done will return true. | 
 | // If Poll succeeds and the operation has completed successfully, | 
 | // op.Done will return true, and the response of the operation is returned. | 
 | // If Poll succeeds and the operation has not completed, the returned response and error are both nil. | 
 | func (op *CreateFunctionOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) | 
 | 	var resp functionspb.CloudFunction | 
 | 	if err := op.lro.Poll(ctx, &resp, opts...); err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	if !op.Done() { | 
 | 		return nil, nil | 
 | 	} | 
 | 	return &resp, nil | 
 | } | 
 |  | 
 | // Metadata returns metadata associated with the long-running operation. | 
 | // Metadata itself does not contact the server, but Poll does. | 
 | // To get the latest metadata, call this method after a successful call to Poll. | 
 | // If the metadata is not available, the returned metadata and error are both nil. | 
 | func (op *CreateFunctionOperation) Metadata() (*functionspb.OperationMetadataV1, error) { | 
 | 	var meta functionspb.OperationMetadataV1 | 
 | 	if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { | 
 | 		return nil, nil | 
 | 	} else if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &meta, nil | 
 | } | 
 |  | 
 | // Done reports whether the long-running operation has completed. | 
 | func (op *CreateFunctionOperation) Done() bool { | 
 | 	return op.lro.Done() | 
 | } | 
 |  | 
 | // Name returns the name of the long-running operation. | 
 | // The name is assigned by the server and is unique within the service from which the operation is created. | 
 | func (op *CreateFunctionOperation) Name() string { | 
 | 	return op.lro.Name() | 
 | } | 
 |  | 
 | // DeleteFunctionOperation manages a long-running operation from DeleteFunction. | 
 | type DeleteFunctionOperation struct { | 
 | 	lro      *longrunning.Operation | 
 | 	pollPath string | 
 | } | 
 |  | 
 | // DeleteFunctionOperation returns a new DeleteFunctionOperation from a given name. | 
 | // The name must be that of a previously created DeleteFunctionOperation, possibly from a different process. | 
 | func (c *cloudFunctionsGRPCClient) DeleteFunctionOperation(name string) *DeleteFunctionOperation { | 
 | 	return &DeleteFunctionOperation{ | 
 | 		lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
 | 	} | 
 | } | 
 |  | 
 | // DeleteFunctionOperation returns a new DeleteFunctionOperation from a given name. | 
 | // The name must be that of a previously created DeleteFunctionOperation, possibly from a different process. | 
 | func (c *cloudFunctionsRESTClient) DeleteFunctionOperation(name string) *DeleteFunctionOperation { | 
 | 	override := fmt.Sprintf("/v1/%s", name) | 
 | 	return &DeleteFunctionOperation{ | 
 | 		lro:      longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
 | 		pollPath: override, | 
 | 	} | 
 | } | 
 |  | 
 | // Wait blocks until the long-running operation is completed, returning the response and any errors encountered. | 
 | // | 
 | // See documentation of Poll for error-handling information. | 
 | func (op *DeleteFunctionOperation) Wait(ctx context.Context, opts ...gax.CallOption) error { | 
 | 	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) | 
 | 	return op.lro.WaitWithInterval(ctx, nil, time.Minute, opts...) | 
 | } | 
 |  | 
 | // Poll fetches the latest state of the long-running operation. | 
 | // | 
 | // Poll also fetches the latest metadata, which can be retrieved by Metadata. | 
 | // | 
 | // If Poll fails, the error is returned and op is unmodified. If Poll succeeds and | 
 | // the operation has completed with failure, the error is returned and op.Done will return true. | 
 | // If Poll succeeds and the operation has completed successfully, | 
 | // op.Done will return true, and the response of the operation is returned. | 
 | // If Poll succeeds and the operation has not completed, the returned response and error are both nil. | 
 | func (op *DeleteFunctionOperation) Poll(ctx context.Context, opts ...gax.CallOption) error { | 
 | 	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) | 
 | 	return op.lro.Poll(ctx, nil, opts...) | 
 | } | 
 |  | 
 | // Metadata returns metadata associated with the long-running operation. | 
 | // Metadata itself does not contact the server, but Poll does. | 
 | // To get the latest metadata, call this method after a successful call to Poll. | 
 | // If the metadata is not available, the returned metadata and error are both nil. | 
 | func (op *DeleteFunctionOperation) Metadata() (*functionspb.OperationMetadataV1, error) { | 
 | 	var meta functionspb.OperationMetadataV1 | 
 | 	if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { | 
 | 		return nil, nil | 
 | 	} else if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &meta, nil | 
 | } | 
 |  | 
 | // Done reports whether the long-running operation has completed. | 
 | func (op *DeleteFunctionOperation) Done() bool { | 
 | 	return op.lro.Done() | 
 | } | 
 |  | 
 | // Name returns the name of the long-running operation. | 
 | // The name is assigned by the server and is unique within the service from which the operation is created. | 
 | func (op *DeleteFunctionOperation) Name() string { | 
 | 	return op.lro.Name() | 
 | } | 
 |  | 
 | // UpdateFunctionOperation manages a long-running operation from UpdateFunction. | 
 | type UpdateFunctionOperation struct { | 
 | 	lro      *longrunning.Operation | 
 | 	pollPath string | 
 | } | 
 |  | 
 | // UpdateFunctionOperation returns a new UpdateFunctionOperation from a given name. | 
 | // The name must be that of a previously created UpdateFunctionOperation, possibly from a different process. | 
 | func (c *cloudFunctionsGRPCClient) UpdateFunctionOperation(name string) *UpdateFunctionOperation { | 
 | 	return &UpdateFunctionOperation{ | 
 | 		lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
 | 	} | 
 | } | 
 |  | 
 | // UpdateFunctionOperation returns a new UpdateFunctionOperation from a given name. | 
 | // The name must be that of a previously created UpdateFunctionOperation, possibly from a different process. | 
 | func (c *cloudFunctionsRESTClient) UpdateFunctionOperation(name string) *UpdateFunctionOperation { | 
 | 	override := fmt.Sprintf("/v1/%s", name) | 
 | 	return &UpdateFunctionOperation{ | 
 | 		lro:      longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), | 
 | 		pollPath: override, | 
 | 	} | 
 | } | 
 |  | 
 | // Wait blocks until the long-running operation is completed, returning the response and any errors encountered. | 
 | // | 
 | // See documentation of Poll for error-handling information. | 
 | func (op *UpdateFunctionOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) | 
 | 	var resp functionspb.CloudFunction | 
 | 	if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &resp, nil | 
 | } | 
 |  | 
 | // Poll fetches the latest state of the long-running operation. | 
 | // | 
 | // Poll also fetches the latest metadata, which can be retrieved by Metadata. | 
 | // | 
 | // If Poll fails, the error is returned and op is unmodified. If Poll succeeds and | 
 | // the operation has completed with failure, the error is returned and op.Done will return true. | 
 | // If Poll succeeds and the operation has completed successfully, | 
 | // op.Done will return true, and the response of the operation is returned. | 
 | // If Poll succeeds and the operation has not completed, the returned response and error are both nil. | 
 | func (op *UpdateFunctionOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*functionspb.CloudFunction, error) { | 
 | 	opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) | 
 | 	var resp functionspb.CloudFunction | 
 | 	if err := op.lro.Poll(ctx, &resp, opts...); err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	if !op.Done() { | 
 | 		return nil, nil | 
 | 	} | 
 | 	return &resp, nil | 
 | } | 
 |  | 
 | // Metadata returns metadata associated with the long-running operation. | 
 | // Metadata itself does not contact the server, but Poll does. | 
 | // To get the latest metadata, call this method after a successful call to Poll. | 
 | // If the metadata is not available, the returned metadata and error are both nil. | 
 | func (op *UpdateFunctionOperation) Metadata() (*functionspb.OperationMetadataV1, error) { | 
 | 	var meta functionspb.OperationMetadataV1 | 
 | 	if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { | 
 | 		return nil, nil | 
 | 	} else if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return &meta, nil | 
 | } | 
 |  | 
 | // Done reports whether the long-running operation has completed. | 
 | func (op *UpdateFunctionOperation) Done() bool { | 
 | 	return op.lro.Done() | 
 | } | 
 |  | 
 | // Name returns the name of the long-running operation. | 
 | // The name is assigned by the server and is unique within the service from which the operation is created. | 
 | func (op *UpdateFunctionOperation) Name() string { | 
 | 	return op.lro.Name() | 
 | } | 
 |  | 
 | // CloudFunctionIterator manages a stream of *functionspb.CloudFunction. | 
 | type CloudFunctionIterator struct { | 
 | 	items    []*functionspb.CloudFunction | 
 | 	pageInfo *iterator.PageInfo | 
 | 	nextFunc func() error | 
 |  | 
 | 	// Response is the raw response for the current page. | 
 | 	// It must be cast to the RPC response type. | 
 | 	// Calling Next() or InternalFetch() updates this value. | 
 | 	Response interface{} | 
 |  | 
 | 	// InternalFetch is for use by the Google Cloud Libraries only. | 
 | 	// It is not part of the stable interface of this package. | 
 | 	// | 
 | 	// InternalFetch returns results from a single call to the underlying RPC. | 
 | 	// The number of results is no greater than pageSize. | 
 | 	// If there are no more results, nextPageToken is empty and err is nil. | 
 | 	InternalFetch func(pageSize int, pageToken string) (results []*functionspb.CloudFunction, nextPageToken string, err error) | 
 | } | 
 |  | 
 | // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. | 
 | func (it *CloudFunctionIterator) PageInfo() *iterator.PageInfo { | 
 | 	return it.pageInfo | 
 | } | 
 |  | 
 | // Next returns the next result. Its second return value is iterator.Done if there are no more | 
 | // results. Once Next returns Done, all subsequent calls will return Done. | 
 | func (it *CloudFunctionIterator) Next() (*functionspb.CloudFunction, error) { | 
 | 	var item *functionspb.CloudFunction | 
 | 	if err := it.nextFunc(); err != nil { | 
 | 		return item, err | 
 | 	} | 
 | 	item = it.items[0] | 
 | 	it.items = it.items[1:] | 
 | 	return item, nil | 
 | } | 
 |  | 
 | func (it *CloudFunctionIterator) bufLen() int { | 
 | 	return len(it.items) | 
 | } | 
 |  | 
 | func (it *CloudFunctionIterator) takeBuf() interface{} { | 
 | 	b := it.items | 
 | 	it.items = nil | 
 | 	return b | 
 | } | 
 |  | 
 | // LocationIterator manages a stream of *locationpb.Location. | 
 | type LocationIterator struct { | 
 | 	items    []*locationpb.Location | 
 | 	pageInfo *iterator.PageInfo | 
 | 	nextFunc func() error | 
 |  | 
 | 	// Response is the raw response for the current page. | 
 | 	// It must be cast to the RPC response type. | 
 | 	// Calling Next() or InternalFetch() updates this value. | 
 | 	Response interface{} | 
 |  | 
 | 	// InternalFetch is for use by the Google Cloud Libraries only. | 
 | 	// It is not part of the stable interface of this package. | 
 | 	// | 
 | 	// InternalFetch returns results from a single call to the underlying RPC. | 
 | 	// The number of results is no greater than pageSize. | 
 | 	// If there are no more results, nextPageToken is empty and err is nil. | 
 | 	InternalFetch func(pageSize int, pageToken string) (results []*locationpb.Location, nextPageToken string, err error) | 
 | } | 
 |  | 
 | // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. | 
 | func (it *LocationIterator) PageInfo() *iterator.PageInfo { | 
 | 	return it.pageInfo | 
 | } | 
 |  | 
 | // Next returns the next result. Its second return value is iterator.Done if there are no more | 
 | // results. Once Next returns Done, all subsequent calls will return Done. | 
 | func (it *LocationIterator) Next() (*locationpb.Location, error) { | 
 | 	var item *locationpb.Location | 
 | 	if err := it.nextFunc(); err != nil { | 
 | 		return item, err | 
 | 	} | 
 | 	item = it.items[0] | 
 | 	it.items = it.items[1:] | 
 | 	return item, nil | 
 | } | 
 |  | 
 | func (it *LocationIterator) bufLen() int { | 
 | 	return len(it.items) | 
 | } | 
 |  | 
 | func (it *LocationIterator) takeBuf() interface{} { | 
 | 	b := it.items | 
 | 	it.items = nil | 
 | 	return b | 
 | } | 
 |  | 
 | // OperationIterator manages a stream of *longrunningpb.Operation. | 
 | type OperationIterator struct { | 
 | 	items    []*longrunningpb.Operation | 
 | 	pageInfo *iterator.PageInfo | 
 | 	nextFunc func() error | 
 |  | 
 | 	// Response is the raw response for the current page. | 
 | 	// It must be cast to the RPC response type. | 
 | 	// Calling Next() or InternalFetch() updates this value. | 
 | 	Response interface{} | 
 |  | 
 | 	// InternalFetch is for use by the Google Cloud Libraries only. | 
 | 	// It is not part of the stable interface of this package. | 
 | 	// | 
 | 	// InternalFetch returns results from a single call to the underlying RPC. | 
 | 	// The number of results is no greater than pageSize. | 
 | 	// If there are no more results, nextPageToken is empty and err is nil. | 
 | 	InternalFetch func(pageSize int, pageToken string) (results []*longrunningpb.Operation, nextPageToken string, err error) | 
 | } | 
 |  | 
 | // PageInfo supports pagination. See the google.golang.org/api/iterator package for details. | 
 | func (it *OperationIterator) PageInfo() *iterator.PageInfo { | 
 | 	return it.pageInfo | 
 | } | 
 |  | 
 | // Next returns the next result. Its second return value is iterator.Done if there are no more | 
 | // results. Once Next returns Done, all subsequent calls will return Done. | 
 | func (it *OperationIterator) Next() (*longrunningpb.Operation, error) { | 
 | 	var item *longrunningpb.Operation | 
 | 	if err := it.nextFunc(); err != nil { | 
 | 		return item, err | 
 | 	} | 
 | 	item = it.items[0] | 
 | 	it.items = it.items[1:] | 
 | 	return item, nil | 
 | } | 
 |  | 
 | func (it *OperationIterator) bufLen() int { | 
 | 	return len(it.items) | 
 | } | 
 |  | 
 | func (it *OperationIterator) takeBuf() interface{} { | 
 | 	b := it.items | 
 | 	it.items = nil | 
 | 	return b | 
 | } |