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