1// Copyright 2020 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 defaultRecaptchaEnterpriseServiceV1Beta1ClientOptions() []option.ClientOption { 51 return []option.ClientOption{ 52 internaloption.WithDefaultEndpoint("recaptchaenterprise.googleapis.com:443"), 53 internaloption.WithDefaultMTLSEndpoint("recaptchaenterprise.mtls.googleapis.com:443"), 54 option.WithGRPCDialOption(grpc.WithDisableServiceConfig()), 55 option.WithScopes(DefaultAuthScopes()...), 56 option.WithGRPCDialOption(grpc.WithDefaultCallOptions( 57 grpc.MaxCallRecvMsgSize(math.MaxInt32))), 58 } 59} 60 61func defaultRecaptchaEnterpriseServiceV1Beta1CallOptions() *RecaptchaEnterpriseServiceV1Beta1CallOptions { 62 return &RecaptchaEnterpriseServiceV1Beta1CallOptions{ 63 CreateAssessment: []gax.CallOption{}, 64 AnnotateAssessment: []gax.CallOption{}, 65 CreateKey: []gax.CallOption{}, 66 ListKeys: []gax.CallOption{}, 67 GetKey: []gax.CallOption{}, 68 UpdateKey: []gax.CallOption{}, 69 DeleteKey: []gax.CallOption{}, 70 } 71} 72 73// RecaptchaEnterpriseServiceV1Beta1Client is a client for interacting with reCAPTCHA Enterprise API. 74// 75// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. 76type RecaptchaEnterpriseServiceV1Beta1Client struct { 77 // Connection pool of gRPC connections to the service. 78 connPool gtransport.ConnPool 79 80 // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE 81 disableDeadlines bool 82 83 // The gRPC API client. 84 recaptchaEnterpriseServiceV1Beta1Client recaptchaenterprisepb.RecaptchaEnterpriseServiceV1Beta1Client 85 86 // The call options for this service. 87 CallOptions *RecaptchaEnterpriseServiceV1Beta1CallOptions 88 89 // The x-goog-* metadata to be sent with each request. 90 xGoogMetadata metadata.MD 91} 92 93// NewRecaptchaEnterpriseServiceV1Beta1Client creates a new recaptcha enterprise service v1 beta1 client. 94// 95// Service to determine the likelihood an event is legitimate. 96func NewRecaptchaEnterpriseServiceV1Beta1Client(ctx context.Context, opts ...option.ClientOption) (*RecaptchaEnterpriseServiceV1Beta1Client, error) { 97 clientOpts := defaultRecaptchaEnterpriseServiceV1Beta1ClientOptions() 98 99 if newRecaptchaEnterpriseServiceV1Beta1ClientHook != nil { 100 hookOpts, err := newRecaptchaEnterpriseServiceV1Beta1ClientHook(ctx, clientHookParams{}) 101 if err != nil { 102 return nil, err 103 } 104 clientOpts = append(clientOpts, hookOpts...) 105 } 106 107 disableDeadlines, err := checkDisableDeadlines() 108 if err != nil { 109 return nil, err 110 } 111 112 connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) 113 if err != nil { 114 return nil, err 115 } 116 c := &RecaptchaEnterpriseServiceV1Beta1Client{ 117 connPool: connPool, 118 disableDeadlines: disableDeadlines, 119 CallOptions: defaultRecaptchaEnterpriseServiceV1Beta1CallOptions(), 120 121 recaptchaEnterpriseServiceV1Beta1Client: recaptchaenterprisepb.NewRecaptchaEnterpriseServiceV1Beta1Client(connPool), 122 } 123 c.setGoogleClientInfo() 124 125 return c, nil 126} 127 128// Connection returns a connection to the API service. 129// 130// Deprecated. 131func (c *RecaptchaEnterpriseServiceV1Beta1Client) Connection() *grpc.ClientConn { 132 return c.connPool.Conn() 133} 134 135// Close closes the connection to the API service. The user should invoke this when 136// the client is no longer required. 137func (c *RecaptchaEnterpriseServiceV1Beta1Client) Close() error { 138 return c.connPool.Close() 139} 140 141// setGoogleClientInfo sets the name and version of the application in 142// the `x-goog-api-client` header passed on each request. Intended for 143// use by Google-written clients. 144func (c *RecaptchaEnterpriseServiceV1Beta1Client) setGoogleClientInfo(keyval ...string) { 145 kv := append([]string{"gl-go", versionGo()}, keyval...) 146 kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version) 147 c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) 148} 149 150// CreateAssessment creates an Assessment of the likelihood an event is legitimate. 151func (c *RecaptchaEnterpriseServiceV1Beta1Client) CreateAssessment(ctx context.Context, req *recaptchaenterprisepb.CreateAssessmentRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Assessment, error) { 152 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 153 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 154 defer cancel() 155 ctx = cctx 156 } 157 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 158 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 159 opts = append(c.CallOptions.CreateAssessment[0:len(c.CallOptions.CreateAssessment):len(c.CallOptions.CreateAssessment)], opts...) 160 var resp *recaptchaenterprisepb.Assessment 161 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 162 var err error 163 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.CreateAssessment(ctx, req, settings.GRPC...) 164 return err 165 }, opts...) 166 if err != nil { 167 return nil, err 168 } 169 return resp, nil 170} 171 172// AnnotateAssessment annotates a previously created Assessment to provide additional information 173// on whether the event turned out to be authentic or fradulent. 174func (c *RecaptchaEnterpriseServiceV1Beta1Client) AnnotateAssessment(ctx context.Context, req *recaptchaenterprisepb.AnnotateAssessmentRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.AnnotateAssessmentResponse, error) { 175 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 176 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 177 defer cancel() 178 ctx = cctx 179 } 180 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 181 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 182 opts = append(c.CallOptions.AnnotateAssessment[0:len(c.CallOptions.AnnotateAssessment):len(c.CallOptions.AnnotateAssessment)], opts...) 183 var resp *recaptchaenterprisepb.AnnotateAssessmentResponse 184 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 185 var err error 186 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.AnnotateAssessment(ctx, req, settings.GRPC...) 187 return err 188 }, opts...) 189 if err != nil { 190 return nil, err 191 } 192 return resp, nil 193} 194 195// CreateKey creates a new reCAPTCHA Enterprise key. 196func (c *RecaptchaEnterpriseServiceV1Beta1Client) CreateKey(ctx context.Context, req *recaptchaenterprisepb.CreateKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 197 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 198 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 199 defer cancel() 200 ctx = cctx 201 } 202 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 203 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 204 opts = append(c.CallOptions.CreateKey[0:len(c.CallOptions.CreateKey):len(c.CallOptions.CreateKey)], opts...) 205 var resp *recaptchaenterprisepb.Key 206 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 207 var err error 208 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.CreateKey(ctx, req, settings.GRPC...) 209 return err 210 }, opts...) 211 if err != nil { 212 return nil, err 213 } 214 return resp, nil 215} 216 217// ListKeys returns the list of all keys that belong to a project. 218func (c *RecaptchaEnterpriseServiceV1Beta1Client) ListKeys(ctx context.Context, req *recaptchaenterprisepb.ListKeysRequest, opts ...gax.CallOption) *KeyIterator { 219 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 220 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 221 opts = append(c.CallOptions.ListKeys[0:len(c.CallOptions.ListKeys):len(c.CallOptions.ListKeys)], opts...) 222 it := &KeyIterator{} 223 req = proto.Clone(req).(*recaptchaenterprisepb.ListKeysRequest) 224 it.InternalFetch = func(pageSize int, pageToken string) ([]*recaptchaenterprisepb.Key, string, error) { 225 var resp *recaptchaenterprisepb.ListKeysResponse 226 req.PageToken = pageToken 227 if pageSize > math.MaxInt32 { 228 req.PageSize = math.MaxInt32 229 } else { 230 req.PageSize = int32(pageSize) 231 } 232 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 233 var err error 234 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.ListKeys(ctx, req, settings.GRPC...) 235 return err 236 }, opts...) 237 if err != nil { 238 return nil, "", err 239 } 240 241 it.Response = resp 242 return resp.GetKeys(), resp.GetNextPageToken(), nil 243 } 244 fetch := func(pageSize int, pageToken string) (string, error) { 245 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 246 if err != nil { 247 return "", err 248 } 249 it.items = append(it.items, items...) 250 return nextPageToken, nil 251 } 252 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 253 it.pageInfo.MaxSize = int(req.GetPageSize()) 254 it.pageInfo.Token = req.GetPageToken() 255 return it 256} 257 258// GetKey returns the specified key. 259func (c *RecaptchaEnterpriseServiceV1Beta1Client) GetKey(ctx context.Context, req *recaptchaenterprisepb.GetKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, 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.GetKey[0:len(c.CallOptions.GetKey):len(c.CallOptions.GetKey)], opts...) 268 var resp *recaptchaenterprisepb.Key 269 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 270 var err error 271 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.GetKey(ctx, req, settings.GRPC...) 272 return err 273 }, opts...) 274 if err != nil { 275 return nil, err 276 } 277 return resp, nil 278} 279 280// UpdateKey updates the specified key. 281func (c *RecaptchaEnterpriseServiceV1Beta1Client) UpdateKey(ctx context.Context, req *recaptchaenterprisepb.UpdateKeyRequest, opts ...gax.CallOption) (*recaptchaenterprisepb.Key, error) { 282 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 283 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 284 defer cancel() 285 ctx = cctx 286 } 287 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "key.name", url.QueryEscape(req.GetKey().GetName()))) 288 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 289 opts = append(c.CallOptions.UpdateKey[0:len(c.CallOptions.UpdateKey):len(c.CallOptions.UpdateKey)], opts...) 290 var resp *recaptchaenterprisepb.Key 291 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 292 var err error 293 resp, err = c.recaptchaEnterpriseServiceV1Beta1Client.UpdateKey(ctx, req, settings.GRPC...) 294 return err 295 }, opts...) 296 if err != nil { 297 return nil, err 298 } 299 return resp, nil 300} 301 302// DeleteKey deletes the specified key. 303func (c *RecaptchaEnterpriseServiceV1Beta1Client) DeleteKey(ctx context.Context, req *recaptchaenterprisepb.DeleteKeyRequest, opts ...gax.CallOption) error { 304 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 305 cctx, cancel := context.WithTimeout(ctx, 600000*time.Millisecond) 306 defer cancel() 307 ctx = cctx 308 } 309 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) 310 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 311 opts = append(c.CallOptions.DeleteKey[0:len(c.CallOptions.DeleteKey):len(c.CallOptions.DeleteKey)], opts...) 312 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 313 var err error 314 _, err = c.recaptchaEnterpriseServiceV1Beta1Client.DeleteKey(ctx, req, settings.GRPC...) 315 return err 316 }, opts...) 317 return err 318} 319 320// KeyIterator manages a stream of *recaptchaenterprisepb.Key. 321type KeyIterator struct { 322 items []*recaptchaenterprisepb.Key 323 pageInfo *iterator.PageInfo 324 nextFunc func() error 325 326 // Response is the raw response for the current page. 327 // It must be cast to the RPC response type. 328 // Calling Next() or InternalFetch() updates this value. 329 Response interface{} 330 331 // InternalFetch is for use by the Google Cloud Libraries only. 332 // It is not part of the stable interface of this package. 333 // 334 // InternalFetch returns results from a single call to the underlying RPC. 335 // The number of results is no greater than pageSize. 336 // If there are no more results, nextPageToken is empty and err is nil. 337 InternalFetch func(pageSize int, pageToken string) (results []*recaptchaenterprisepb.Key, nextPageToken string, err error) 338} 339 340// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 341func (it *KeyIterator) PageInfo() *iterator.PageInfo { 342 return it.pageInfo 343} 344 345// Next returns the next result. Its second return value is iterator.Done if there are no more 346// results. Once Next returns Done, all subsequent calls will return Done. 347func (it *KeyIterator) Next() (*recaptchaenterprisepb.Key, error) { 348 var item *recaptchaenterprisepb.Key 349 if err := it.nextFunc(); err != nil { 350 return item, err 351 } 352 item = it.items[0] 353 it.items = it.items[1:] 354 return item, nil 355} 356 357func (it *KeyIterator) bufLen() int { 358 return len(it.items) 359} 360 361func (it *KeyIterator) takeBuf() interface{} { 362 b := it.items 363 it.items = nil 364 return b 365} 366