1// Copyright 2021 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// https://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go_gapic. DO NOT EDIT. 16 17package recaptchaenterprise 18 19import ( 20 "context" 21 "fmt" 22 "math" 23 "net/url" 24 "time" 25 26 "github.com/golang/protobuf/proto" 27 gax "github.com/googleapis/gax-go/v2" 28 "google.golang.org/api/iterator" 29 "google.golang.org/api/option" 30 "google.golang.org/api/option/internaloption" 31 gtransport "google.golang.org/api/transport/grpc" 32 recaptchaenterprisepb "google.golang.org/genproto/googleapis/cloud/recaptchaenterprise/v1beta1" 33 "google.golang.org/grpc" 34 "google.golang.org/grpc/metadata" 35) 36 37var newRecaptchaEnterpriseServiceV1Beta1ClientHook clientHook 38 39// RecaptchaEnterpriseServiceV1Beta1CallOptions contains the retry settings for each method of RecaptchaEnterpriseServiceV1Beta1Client. 40type RecaptchaEnterpriseServiceV1Beta1CallOptions struct { 41 CreateAssessment []gax.CallOption 42 AnnotateAssessment []gax.CallOption 43 CreateKey []gax.CallOption 44 ListKeys []gax.CallOption 45 GetKey []gax.CallOption 46 UpdateKey []gax.CallOption 47 DeleteKey []gax.CallOption 48} 49 50func defaultRecaptchaEnterpriseServiceV1Beta1GRPCClientOptions() []option.ClientOption { 51 return []option.ClientOption{ 52 internaloption.WithDefaultEndpoint("recaptchaenterprise.googleapis.com:443"), 53 internaloption.WithDefaultMTLSEndpoint("recaptchaenterprise.mtls.googleapis.com:443"), 54 internaloption.WithDefaultAudience("https://recaptchaenterprise.googleapis.com/"), 55 internaloption.WithDefaultScopes(DefaultAuthScopes()...), 56 option.WithGRPCDialOption(grpc.WithDisableServiceConfig()), 57 option.WithGRPCDialOption(grpc.WithDefaultCallOptions( 58 grpc.MaxCallRecvMsgSize(math.MaxInt32))), 59 } 60} 61 62func defaultRecaptchaEnterpriseServiceV1Beta1CallOptions() *RecaptchaEnterpriseServiceV1Beta1CallOptions { 63 return &RecaptchaEnterpriseServiceV1Beta1CallOptions{ 64 CreateAssessment: []gax.CallOption{}, 65 AnnotateAssessment: []gax.CallOption{}, 66 CreateKey: []gax.CallOption{}, 67 ListKeys: []gax.CallOption{}, 68 GetKey: []gax.CallOption{}, 69 UpdateKey: []gax.CallOption{}, 70 DeleteKey: []gax.CallOption{}, 71 } 72} 73 74// internalRecaptchaEnterpriseServiceV1Beta1Client is an interface that defines the methods availaible from reCAPTCHA Enterprise API. 75type internalRecaptchaEnterpriseServiceV1Beta1Client interface { 76 Close() error 77 setGoogleClientInfo(...string) 78 Connection() *grpc.ClientConn 79 CreateAssessment(context.Context, *recaptchaenterprisepb.CreateAssessmentRequest, ...gax.CallOption) (*recaptchaenterprisepb.Assessment, error) 80 AnnotateAssessment(context.Context, *recaptchaenterprisepb.AnnotateAssessmentRequest, ...gax.CallOption) (*recaptchaenterprisepb.AnnotateAssessmentResponse, error) 81 CreateKey(context.Context, *recaptchaenterprisepb.CreateKeyRequest, ...gax.CallOption) (*recaptchaenterprisepb.Key, error) 82 ListKeys(context.Context, *recaptchaenterprisepb.ListKeysRequest, ...gax.CallOption) *KeyIterator 83 GetKey(context.Context, *recaptchaenterprisepb.GetKeyRequest, ...gax.CallOption) (*recaptchaenterprisepb.Key, error) 84 UpdateKey(context.Context, *recaptchaenterprisepb.UpdateKeyRequest, ...gax.CallOption) (*recaptchaenterprisepb.Key, error) 85 DeleteKey(context.Context, *recaptchaenterprisepb.DeleteKeyRequest, ...gax.CallOption) error 86} 87 88// RecaptchaEnterpriseServiceV1Beta1Client is a client for interacting with reCAPTCHA Enterprise API. 89// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. 90// 91// Service to determine the likelihood an event is legitimate. 92type RecaptchaEnterpriseServiceV1Beta1Client struct { 93 // The internal transport-dependent client. 94 internalClient internalRecaptchaEnterpriseServiceV1Beta1Client 95 96 // The call options for this service. 97 CallOptions *RecaptchaEnterpriseServiceV1Beta1CallOptions 98} 99 100// Wrapper methods routed to the internal client. 101 102// Close closes the connection to the API service. The user should invoke this when 103// the client is no longer required. 104func (c *RecaptchaEnterpriseServiceV1Beta1Client) Close() error { 105 return c.internalClient.Close() 106} 107 108// setGoogleClientInfo sets the name and version of the application in 109// the `x-goog-api-client` header passed on each request. Intended for 110// use by Google-written clients. 111func (c *RecaptchaEnterpriseServiceV1Beta1Client) setGoogleClientInfo(keyval ...string) { 112 c.internalClient.setGoogleClientInfo(keyval...) 113} 114 115// Connection returns a connection to the API service. 116// 117// Deprecated. 118func (c *RecaptchaEnterpriseServiceV1Beta1Client) Connection() *grpc.ClientConn { 119 return c.internalClient.Connection() 120} 121 122// CreateAssessment creates an Assessment of the likelihood an event is legitimate. 123func (c *RecaptchaEnterpriseServiceV1Beta1Client) CreateAssessment(ctx context.Context, req *recaptchaenterprisepb.CreateAssessmentRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Assessment, error) { 124 return c.internalClient.CreateAssessment(ctx, req, opts...) 125} 126 127// AnnotateAssessment annotates a previously created Assessment to provide additional information 128// on whether the event turned out to be authentic or fradulent. 129func (c *RecaptchaEnterpriseServiceV1Beta1Client) AnnotateAssessment(ctx context.Context, req *recaptchaenterprisepb.AnnotateAssessmentRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.AnnotateAssessmentResponse, error) { 130 return c.internalClient.AnnotateAssessment(ctx, req, opts...) 131} 132 133// CreateKey creates a new reCAPTCHA Enterprise key. 134func (c *RecaptchaEnterpriseServiceV1Beta1Client) CreateKey(ctx context.Context, req *recaptchaenterprisepb.CreateKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 135 return c.internalClient.CreateKey(ctx, req, opts...) 136} 137 138// ListKeys returns the list of all keys that belong to a project. 139func (c *RecaptchaEnterpriseServiceV1Beta1Client) ListKeys(ctx context.Context, req *recaptchaenterprisepb.ListKeysRequest, opts ...gax.CallOption) *KeyIterator { 140 return c.internalClient.ListKeys(ctx, req, opts...) 141} 142 143// GetKey returns the specified key. 144func (c *RecaptchaEnterpriseServiceV1Beta1Client) GetKey(ctx context.Context, req *recaptchaenterprisepb.GetKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 145 return c.internalClient.GetKey(ctx, req, opts...) 146} 147 148// UpdateKey updates the specified key. 149func (c *RecaptchaEnterpriseServiceV1Beta1Client) UpdateKey(ctx context.Context, req *recaptchaenterprisepb.UpdateKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 150 return c.internalClient.UpdateKey(ctx, req, opts...) 151} 152 153// DeleteKey deletes the specified key. 154func (c *RecaptchaEnterpriseServiceV1Beta1Client) DeleteKey(ctx context.Context, req *recaptchaenterprisepb.DeleteKeyRequest, opts ...gax.CallOption) error { 155 return c.internalClient.DeleteKey(ctx, req, opts...) 156} 157 158// recaptchaEnterpriseServiceV1Beta1GRPCClient is a client for interacting with reCAPTCHA Enterprise API over gRPC transport. 159// 160// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. 161type recaptchaEnterpriseServiceV1Beta1GRPCClient struct { 162 // Connection pool of gRPC connections to the service. 163 connPool gtransport.ConnPool 164 165 // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE 166 disableDeadlines bool 167 168 // Points back to the CallOptions field of the containing RecaptchaEnterpriseServiceV1Beta1Client 169 CallOptions **RecaptchaEnterpriseServiceV1Beta1CallOptions 170 171 // The gRPC API client. 172 recaptchaEnterpriseServiceV1Beta1Client recaptchaenterprisepb.RecaptchaEnterpriseServiceV1Beta1Client 173 174 // The x-goog-* metadata to be sent with each request. 175 xGoogMetadata metadata.MD 176} 177 178// NewRecaptchaEnterpriseServiceV1Beta1Client creates a new recaptcha enterprise service v1 beta1 client based on gRPC. 179// The returned client must be Closed when it is done being used to clean up its underlying connections. 180// 181// Service to determine the likelihood an event is legitimate. 182func NewRecaptchaEnterpriseServiceV1Beta1Client(ctx context.Context, opts ...option.ClientOption) (*RecaptchaEnterpriseServiceV1Beta1Client, error) { 183 clientOpts := defaultRecaptchaEnterpriseServiceV1Beta1GRPCClientOptions() 184 if newRecaptchaEnterpriseServiceV1Beta1ClientHook != nil { 185 hookOpts, err := newRecaptchaEnterpriseServiceV1Beta1ClientHook(ctx, clientHookParams{}) 186 if err != nil { 187 return nil, err 188 } 189 clientOpts = append(clientOpts, hookOpts...) 190 } 191 192 disableDeadlines, err := checkDisableDeadlines() 193 if err != nil { 194 return nil, err 195 } 196 197 connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) 198 if err != nil { 199 return nil, err 200 } 201 client := RecaptchaEnterpriseServiceV1Beta1Client{CallOptions: defaultRecaptchaEnterpriseServiceV1Beta1CallOptions()} 202 203 c := &recaptchaEnterpriseServiceV1Beta1GRPCClient{ 204 connPool: connPool, 205 disableDeadlines: disableDeadlines, 206 recaptchaEnterpriseServiceV1Beta1Client: recaptchaenterprisepb.NewRecaptchaEnterpriseServiceV1Beta1Client(connPool), 207 CallOptions: &client.CallOptions, 208 } 209 c.setGoogleClientInfo() 210 211 client.internalClient = c 212 213 return &client, nil 214} 215 216// Connection returns a connection to the API service. 217// 218// Deprecated. 219func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) Connection() *grpc.ClientConn { 220 return c.connPool.Conn() 221} 222 223// setGoogleClientInfo sets the name and version of the application in 224// the `x-goog-api-client` header passed on each request. Intended for 225// use by Google-written clients. 226func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) setGoogleClientInfo(keyval ...string) { 227 kv := append([]string{"gl-go", versionGo()}, keyval...) 228 kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version) 229 c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) 230} 231 232// Close closes the connection to the API service. The user should invoke this when 233// the client is no longer required. 234func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) Close() error { 235 return c.connPool.Close() 236} 237 238func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) CreateAssessment(ctx context.Context, req *recaptchaenterprisepb.CreateAssessmentRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Assessment, error) { 239 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 240 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 241 defer cancel() 242 ctx = cctx 243 } 244 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 245 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 246 opts = append((*c.CallOptions).CreateAssessment[0:len((*c.CallOptions).CreateAssessment):len((*c.CallOptions).CreateAssessment)], opts...) 247 var resp *recaptchaenterprisepb.Assessment 248 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 249 var err error 250 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.CreateAssessment(ctx, req, settings.GRPC...) 251 return err 252 }, opts...) 253 if err != nil { 254 return nil, err 255 } 256 return resp, nil 257} 258 259func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) AnnotateAssessment(ctx context.Context, req *recaptchaenterprisepb.AnnotateAssessmentRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.AnnotateAssessmentResponse, error) { 260 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 261 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 262 defer cancel() 263 ctx = cctx 264 } 265 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 266 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 267 opts = append((*c.CallOptions).AnnotateAssessment[0:len((*c.CallOptions).AnnotateAssessment):len((*c.CallOptions).AnnotateAssessment)], opts...) 268 var resp *recaptchaenterprisepb.AnnotateAssessmentResponse 269 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 270 var err error 271 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.AnnotateAssessment(ctx, req, settings.GRPC...) 272 return err 273 }, opts...) 274 if err != nil { 275 return nil, err 276 } 277 return resp, nil 278} 279 280func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) CreateKey(ctx context.Context, req *recaptchaenterprisepb.CreateKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 281 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 282 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 283 defer cancel() 284 ctx = cctx 285 } 286 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 287 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 288 opts = append((*c.CallOptions).CreateKey[0:len((*c.CallOptions).CreateKey):len((*c.CallOptions).CreateKey)], opts...) 289 var resp *recaptchaenterprisepb.Key 290 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 291 var err error 292 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.CreateKey(ctx, req, settings.GRPC...) 293 return err 294 }, opts...) 295 if err != nil { 296 return nil, err 297 } 298 return resp, nil 299} 300 301func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) ListKeys(ctx context.Context, req *recaptchaenterprisepb.ListKeysRequest, opts ...gax.CallOption) *KeyIterator { 302 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 303 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 304 opts = append((*c.CallOptions).ListKeys[0:len((*c.CallOptions).ListKeys):len((*c.CallOptions).ListKeys)], opts...) 305 it := &KeyIterator{} 306 req = proto.Clone(req).(*recaptchaenterprisepb.ListKeysRequest) 307 it.InternalFetch = func(pageSize int, pageToken string) ([]*recaptchaenterprisepb.Key, string, error) { 308 var resp *recaptchaenterprisepb.ListKeysResponse 309 req.PageToken = pageToken 310 if pageSize > math.MaxInt32 { 311 req.PageSize = math.MaxInt32 312 } else { 313 req.PageSize = int32(pageSize) 314 } 315 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 316 var err error 317 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.ListKeys(ctx, req, settings.GRPC...) 318 return err 319 }, opts...) 320 if err != nil { 321 return nil, "", err 322 } 323 324 it.Response = resp 325 return resp.GetKeys(), resp.GetNextPageToken(), nil 326 } 327 fetch := func(pageSize int, pageToken string) (string, error) { 328 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 329 if err != nil { 330 return "", err 331 } 332 it.items = append(it.items, items...) 333 return nextPageToken, nil 334 } 335 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 336 it.pageInfo.MaxSize = int(req.GetPageSize()) 337 it.pageInfo.Token = req.GetPageToken() 338 return it 339} 340 341func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) GetKey(ctx context.Context, req *recaptchaenterprisepb.GetKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 342 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 343 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 344 defer cancel() 345 ctx = cctx 346 } 347 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 348 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 349 opts = append((*c.CallOptions).GetKey[0:len((*c.CallOptions).GetKey):len((*c.CallOptions).GetKey)], opts...) 350 var resp *recaptchaenterprisepb.Key 351 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 352 var err error 353 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.GetKey(ctx, req, settings.GRPC...) 354 return err 355 }, opts...) 356 if err != nil { 357 return nil, err 358 } 359 return resp, nil 360} 361 362func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) UpdateKey(ctx context.Context, req *recaptchaenterprisepb.UpdateKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 363 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 364 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 365 defer cancel() 366 ctx = cctx 367 } 368 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "key.name", url.QueryEscape(req.GetKey().GetName()))) 369 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 370 opts = append((*c.CallOptions).UpdateKey[0:len((*c.CallOptions).UpdateKey):len((*c.CallOptions).UpdateKey)], opts...) 371 var resp *recaptchaenterprisepb.Key 372 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 373 var err error 374 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.UpdateKey(ctx, req, settings.GRPC...) 375 return err 376 }, opts...) 377 if err != nil { 378 return nil, err 379 } 380 return resp, nil 381} 382 383func (c *recaptchaEnterpriseServiceV1Beta1GRPCClient) DeleteKey(ctx context.Context, req *recaptchaenterprisepb.DeleteKeyRequest, opts ...gax.CallOption) error { 384 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 385 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 386 defer cancel() 387 ctx = cctx 388 } 389 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 390 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 391 opts = append((*c.CallOptions).DeleteKey[0:len((*c.CallOptions).DeleteKey):len((*c.CallOptions).DeleteKey)], opts...) 392 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 393 var err error 394 _, err = c.recaptchaEnterpriseServiceV1Beta1Client.DeleteKey(ctx, req, settings.GRPC...) 395 return err 396 }, opts...) 397 return err 398} 399 400// KeyIterator manages a stream of *recaptchaenterprisepb.Key. 401type KeyIterator struct { 402 items []*recaptchaenterprisepb.Key 403 pageInfo *iterator.PageInfo 404 nextFunc func() error 405 406 // Response is the raw response for the current page. 407 // It must be cast to the RPC response type. 408 // Calling Next() or InternalFetch() updates this value. 409 Response interface{} 410 411 // InternalFetch is for use by the Google Cloud Libraries only. 412 // It is not part of the stable interface of this package. 413 // 414 // InternalFetch returns results from a single call to the underlying RPC. 415 // The number of results is no greater than pageSize. 416 // If there are no more results, nextPageToken is empty and err is nil. 417 InternalFetch func(pageSize int, pageToken string) (results []*recaptchaenterprisepb.Key, nextPageToken string, err error) 418} 419 420// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 421func (it *KeyIterator) PageInfo() *iterator.PageInfo { 422 return it.pageInfo 423} 424 425// Next returns the next result. Its second return value is iterator.Done if there are no more 426// results. Once Next returns Done, all subsequent calls will return Done. 427func (it *KeyIterator) Next() (*recaptchaenterprisepb.Key, error) { 428 var item *recaptchaenterprisepb.Key 429 if err := it.nextFunc(); err != nil { 430 return item, err 431 } 432 item = it.items[0] 433 it.items = it.items[1:] 434 return item, nil 435} 436 437func (it *KeyIterator) bufLen() int { 438 return len(it.items) 439} 440 441func (it *KeyIterator) takeBuf() interface{} { 442 b := it.items 443 it.items = nil 444 return b 445} 446