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