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 datatransfer
18
19import (
20	"context"
21	"fmt"
22	"math"
23	"net/url"
24	"time"
25
26	gax "github.com/googleapis/gax-go/v2"
27	"google.golang.org/api/iterator"
28	"google.golang.org/api/option"
29	"google.golang.org/api/option/internaloption"
30	gtransport "google.golang.org/api/transport/grpc"
31	datatransferpb "google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1"
32	"google.golang.org/grpc"
33	"google.golang.org/grpc/codes"
34	"google.golang.org/grpc/metadata"
35	"google.golang.org/protobuf/proto"
36)
37
38var newClientHook clientHook
39
40// CallOptions contains the retry settings for each method of Client.
41type CallOptions struct {
42	GetDataSource           []gax.CallOption
43	ListDataSources         []gax.CallOption
44	CreateTransferConfig    []gax.CallOption
45	UpdateTransferConfig    []gax.CallOption
46	DeleteTransferConfig    []gax.CallOption
47	GetTransferConfig       []gax.CallOption
48	ListTransferConfigs     []gax.CallOption
49	ScheduleTransferRuns    []gax.CallOption
50	StartManualTransferRuns []gax.CallOption
51	GetTransferRun          []gax.CallOption
52	DeleteTransferRun       []gax.CallOption
53	ListTransferRuns        []gax.CallOption
54	ListTransferLogs        []gax.CallOption
55	CheckValidCreds         []gax.CallOption
56}
57
58func defaultGRPCClientOptions() []option.ClientOption {
59	return []option.ClientOption{
60		internaloption.WithDefaultEndpoint("bigquerydatatransfer.googleapis.com:443"),
61		internaloption.WithDefaultMTLSEndpoint("bigquerydatatransfer.mtls.googleapis.com:443"),
62		internaloption.WithDefaultAudience("https://bigquerydatatransfer.googleapis.com/"),
63		internaloption.WithDefaultScopes(DefaultAuthScopes()...),
64		internaloption.EnableJwtWithScope(),
65		option.WithGRPCDialOption(grpc.WithDisableServiceConfig()),
66		option.WithGRPCDialOption(grpc.WithDefaultCallOptions(
67			grpc.MaxCallRecvMsgSize(math.MaxInt32))),
68	}
69}
70
71func defaultCallOptions() *CallOptions {
72	return &CallOptions{
73		GetDataSource: []gax.CallOption{
74			gax.WithRetry(func() gax.Retryer {
75				return gax.OnCodes([]codes.Code{
76					codes.Unavailable,
77					codes.DeadlineExceeded,
78				}, gax.Backoff{
79					Initial:    100 * time.Millisecond,
80					Max:        60000 * time.Millisecond,
81					Multiplier: 1.30,
82				})
83			}),
84		},
85		ListDataSources: []gax.CallOption{
86			gax.WithRetry(func() gax.Retryer {
87				return gax.OnCodes([]codes.Code{
88					codes.Unavailable,
89					codes.DeadlineExceeded,
90				}, gax.Backoff{
91					Initial:    100 * time.Millisecond,
92					Max:        60000 * time.Millisecond,
93					Multiplier: 1.30,
94				})
95			}),
96		},
97		CreateTransferConfig: []gax.CallOption{},
98		UpdateTransferConfig: []gax.CallOption{},
99		DeleteTransferConfig: []gax.CallOption{
100			gax.WithRetry(func() gax.Retryer {
101				return gax.OnCodes([]codes.Code{
102					codes.Unavailable,
103					codes.DeadlineExceeded,
104				}, gax.Backoff{
105					Initial:    100 * time.Millisecond,
106					Max:        60000 * time.Millisecond,
107					Multiplier: 1.30,
108				})
109			}),
110		},
111		GetTransferConfig: []gax.CallOption{
112			gax.WithRetry(func() gax.Retryer {
113				return gax.OnCodes([]codes.Code{
114					codes.Unavailable,
115					codes.DeadlineExceeded,
116				}, gax.Backoff{
117					Initial:    100 * time.Millisecond,
118					Max:        60000 * time.Millisecond,
119					Multiplier: 1.30,
120				})
121			}),
122		},
123		ListTransferConfigs: []gax.CallOption{
124			gax.WithRetry(func() gax.Retryer {
125				return gax.OnCodes([]codes.Code{
126					codes.Unavailable,
127					codes.DeadlineExceeded,
128				}, gax.Backoff{
129					Initial:    100 * time.Millisecond,
130					Max:        60000 * time.Millisecond,
131					Multiplier: 1.30,
132				})
133			}),
134		},
135		ScheduleTransferRuns:    []gax.CallOption{},
136		StartManualTransferRuns: []gax.CallOption{},
137		GetTransferRun: []gax.CallOption{
138			gax.WithRetry(func() gax.Retryer {
139				return gax.OnCodes([]codes.Code{
140					codes.Unavailable,
141					codes.DeadlineExceeded,
142				}, gax.Backoff{
143					Initial:    100 * time.Millisecond,
144					Max:        60000 * time.Millisecond,
145					Multiplier: 1.30,
146				})
147			}),
148		},
149		DeleteTransferRun: []gax.CallOption{
150			gax.WithRetry(func() gax.Retryer {
151				return gax.OnCodes([]codes.Code{
152					codes.Unavailable,
153					codes.DeadlineExceeded,
154				}, gax.Backoff{
155					Initial:    100 * time.Millisecond,
156					Max:        60000 * time.Millisecond,
157					Multiplier: 1.30,
158				})
159			}),
160		},
161		ListTransferRuns: []gax.CallOption{
162			gax.WithRetry(func() gax.Retryer {
163				return gax.OnCodes([]codes.Code{
164					codes.Unavailable,
165					codes.DeadlineExceeded,
166				}, gax.Backoff{
167					Initial:    100 * time.Millisecond,
168					Max:        60000 * time.Millisecond,
169					Multiplier: 1.30,
170				})
171			}),
172		},
173		ListTransferLogs: []gax.CallOption{
174			gax.WithRetry(func() gax.Retryer {
175				return gax.OnCodes([]codes.Code{
176					codes.Unavailable,
177					codes.DeadlineExceeded,
178				}, gax.Backoff{
179					Initial:    100 * time.Millisecond,
180					Max:        60000 * time.Millisecond,
181					Multiplier: 1.30,
182				})
183			}),
184		},
185		CheckValidCreds: []gax.CallOption{
186			gax.WithRetry(func() gax.Retryer {
187				return gax.OnCodes([]codes.Code{
188					codes.Unavailable,
189					codes.DeadlineExceeded,
190				}, gax.Backoff{
191					Initial:    100 * time.Millisecond,
192					Max:        60000 * time.Millisecond,
193					Multiplier: 1.30,
194				})
195			}),
196		},
197	}
198}
199
200// internalClient is an interface that defines the methods availaible from BigQuery Data Transfer API.
201type internalClient interface {
202	Close() error
203	setGoogleClientInfo(...string)
204	Connection() *grpc.ClientConn
205	GetDataSource(context.Context, *datatransferpb.GetDataSourceRequest, ...gax.CallOption) (*datatransferpb.DataSource, error)
206	ListDataSources(context.Context, *datatransferpb.ListDataSourcesRequest, ...gax.CallOption) *DataSourceIterator
207	CreateTransferConfig(context.Context, *datatransferpb.CreateTransferConfigRequest, ...gax.CallOption) (*datatransferpb.TransferConfig, error)
208	UpdateTransferConfig(context.Context, *datatransferpb.UpdateTransferConfigRequest, ...gax.CallOption) (*datatransferpb.TransferConfig, error)
209	DeleteTransferConfig(context.Context, *datatransferpb.DeleteTransferConfigRequest, ...gax.CallOption) error
210	GetTransferConfig(context.Context, *datatransferpb.GetTransferConfigRequest, ...gax.CallOption) (*datatransferpb.TransferConfig, error)
211	ListTransferConfigs(context.Context, *datatransferpb.ListTransferConfigsRequest, ...gax.CallOption) *TransferConfigIterator
212	ScheduleTransferRuns(context.Context, *datatransferpb.ScheduleTransferRunsRequest, ...gax.CallOption) (*datatransferpb.ScheduleTransferRunsResponse, error)
213	StartManualTransferRuns(context.Context, *datatransferpb.StartManualTransferRunsRequest, ...gax.CallOption) (*datatransferpb.StartManualTransferRunsResponse, error)
214	GetTransferRun(context.Context, *datatransferpb.GetTransferRunRequest, ...gax.CallOption) (*datatransferpb.TransferRun, error)
215	DeleteTransferRun(context.Context, *datatransferpb.DeleteTransferRunRequest, ...gax.CallOption) error
216	ListTransferRuns(context.Context, *datatransferpb.ListTransferRunsRequest, ...gax.CallOption) *TransferRunIterator
217	ListTransferLogs(context.Context, *datatransferpb.ListTransferLogsRequest, ...gax.CallOption) *TransferMessageIterator
218	CheckValidCreds(context.Context, *datatransferpb.CheckValidCredsRequest, ...gax.CallOption) (*datatransferpb.CheckValidCredsResponse, error)
219}
220
221// Client is a client for interacting with BigQuery Data Transfer API.
222// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
223//
224// The Google BigQuery Data Transfer Service API enables BigQuery users to
225// configure the transfer of their data from other Google Products into
226// BigQuery. This service contains methods that are end user exposed. It backs
227// up the frontend.
228type Client struct {
229	// The internal transport-dependent client.
230	internalClient internalClient
231
232	// The call options for this service.
233	CallOptions *CallOptions
234}
235
236// Wrapper methods routed to the internal client.
237
238// Close closes the connection to the API service. The user should invoke this when
239// the client is no longer required.
240func (c *Client) Close() error {
241	return c.internalClient.Close()
242}
243
244// setGoogleClientInfo sets the name and version of the application in
245// the `x-goog-api-client` header passed on each request. Intended for
246// use by Google-written clients.
247func (c *Client) setGoogleClientInfo(keyval ...string) {
248	c.internalClient.setGoogleClientInfo(keyval...)
249}
250
251// Connection returns a connection to the API service.
252//
253// Deprecated.
254func (c *Client) Connection() *grpc.ClientConn {
255	return c.internalClient.Connection()
256}
257
258// GetDataSource retrieves a supported data source and returns its settings,
259// which can be used for UI rendering.
260func (c *Client) GetDataSource(ctx context.Context, req *datatransferpb.GetDataSourceRequest, opts ...gax.CallOption) (*datatransferpb.DataSource, error) {
261	return c.internalClient.GetDataSource(ctx, req, opts...)
262}
263
264// ListDataSources lists supported data sources and returns their settings,
265// which can be used for UI rendering.
266func (c *Client) ListDataSources(ctx context.Context, req *datatransferpb.ListDataSourcesRequest, opts ...gax.CallOption) *DataSourceIterator {
267	return c.internalClient.ListDataSources(ctx, req, opts...)
268}
269
270// CreateTransferConfig creates a new data transfer configuration.
271func (c *Client) CreateTransferConfig(ctx context.Context, req *datatransferpb.CreateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
272	return c.internalClient.CreateTransferConfig(ctx, req, opts...)
273}
274
275// UpdateTransferConfig updates a data transfer configuration.
276// All fields must be set, even if they are not updated.
277func (c *Client) UpdateTransferConfig(ctx context.Context, req *datatransferpb.UpdateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
278	return c.internalClient.UpdateTransferConfig(ctx, req, opts...)
279}
280
281// DeleteTransferConfig deletes a data transfer configuration,
282// including any associated transfer runs and logs.
283func (c *Client) DeleteTransferConfig(ctx context.Context, req *datatransferpb.DeleteTransferConfigRequest, opts ...gax.CallOption) error {
284	return c.internalClient.DeleteTransferConfig(ctx, req, opts...)
285}
286
287// GetTransferConfig returns information about a data transfer config.
288func (c *Client) GetTransferConfig(ctx context.Context, req *datatransferpb.GetTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
289	return c.internalClient.GetTransferConfig(ctx, req, opts...)
290}
291
292// ListTransferConfigs returns information about all transfer configs owned by a project in the
293// specified location.
294func (c *Client) ListTransferConfigs(ctx context.Context, req *datatransferpb.ListTransferConfigsRequest, opts ...gax.CallOption) *TransferConfigIterator {
295	return c.internalClient.ListTransferConfigs(ctx, req, opts...)
296}
297
298// ScheduleTransferRuns creates transfer runs for a time range [start_time, end_time].
299// For each date - or whatever granularity the data source supports - in the
300// range, one transfer run is created.
301// Note that runs are created per UTC time in the time range.
302// DEPRECATED: use StartManualTransferRuns instead.
303//
304// Deprecated: ScheduleTransferRuns may be removed in a future version.
305func (c *Client) ScheduleTransferRuns(ctx context.Context, req *datatransferpb.ScheduleTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.ScheduleTransferRunsResponse, error) {
306	return c.internalClient.ScheduleTransferRuns(ctx, req, opts...)
307}
308
309// StartManualTransferRuns start manual transfer runs to be executed now with schedule_time equal to
310// current time. The transfer runs can be created for a time range where the
311// run_time is between start_time (inclusive) and end_time (exclusive), or for
312// a specific run_time.
313func (c *Client) StartManualTransferRuns(ctx context.Context, req *datatransferpb.StartManualTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.StartManualTransferRunsResponse, error) {
314	return c.internalClient.StartManualTransferRuns(ctx, req, opts...)
315}
316
317// GetTransferRun returns information about the particular transfer run.
318func (c *Client) GetTransferRun(ctx context.Context, req *datatransferpb.GetTransferRunRequest, opts ...gax.CallOption) (*datatransferpb.TransferRun, error) {
319	return c.internalClient.GetTransferRun(ctx, req, opts...)
320}
321
322// DeleteTransferRun deletes the specified transfer run.
323func (c *Client) DeleteTransferRun(ctx context.Context, req *datatransferpb.DeleteTransferRunRequest, opts ...gax.CallOption) error {
324	return c.internalClient.DeleteTransferRun(ctx, req, opts...)
325}
326
327// ListTransferRuns returns information about running and completed jobs.
328func (c *Client) ListTransferRuns(ctx context.Context, req *datatransferpb.ListTransferRunsRequest, opts ...gax.CallOption) *TransferRunIterator {
329	return c.internalClient.ListTransferRuns(ctx, req, opts...)
330}
331
332// ListTransferLogs returns user facing log messages for the data transfer run.
333func (c *Client) ListTransferLogs(ctx context.Context, req *datatransferpb.ListTransferLogsRequest, opts ...gax.CallOption) *TransferMessageIterator {
334	return c.internalClient.ListTransferLogs(ctx, req, opts...)
335}
336
337// CheckValidCreds returns true if valid credentials exist for the given data source and
338// requesting user.
339// Some data sources doesn’t support service account, so we need to talk to
340// them on behalf of the end user. This API just checks whether we have OAuth
341// token for the particular user, which is a pre-requisite before user can
342// create a transfer config.
343func (c *Client) CheckValidCreds(ctx context.Context, req *datatransferpb.CheckValidCredsRequest, opts ...gax.CallOption) (*datatransferpb.CheckValidCredsResponse, error) {
344	return c.internalClient.CheckValidCreds(ctx, req, opts...)
345}
346
347// gRPCClient is a client for interacting with BigQuery Data Transfer API over gRPC transport.
348//
349// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
350type gRPCClient struct {
351	// Connection pool of gRPC connections to the service.
352	connPool gtransport.ConnPool
353
354	// flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE
355	disableDeadlines bool
356
357	// Points back to the CallOptions field of the containing Client
358	CallOptions **CallOptions
359
360	// The gRPC API client.
361	client datatransferpb.DataTransferServiceClient
362
363	// The x-goog-* metadata to be sent with each request.
364	xGoogMetadata metadata.MD
365}
366
367// NewClient creates a new data transfer service client based on gRPC.
368// The returned client must be Closed when it is done being used to clean up its underlying connections.
369//
370// The Google BigQuery Data Transfer Service API enables BigQuery users to
371// configure the transfer of their data from other Google Products into
372// BigQuery. This service contains methods that are end user exposed. It backs
373// up the frontend.
374func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
375	clientOpts := defaultGRPCClientOptions()
376	if newClientHook != nil {
377		hookOpts, err := newClientHook(ctx, clientHookParams{})
378		if err != nil {
379			return nil, err
380		}
381		clientOpts = append(clientOpts, hookOpts...)
382	}
383
384	disableDeadlines, err := checkDisableDeadlines()
385	if err != nil {
386		return nil, err
387	}
388
389	connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...)
390	if err != nil {
391		return nil, err
392	}
393	client := Client{CallOptions: defaultCallOptions()}
394
395	c := &gRPCClient{
396		connPool:         connPool,
397		disableDeadlines: disableDeadlines,
398		client:           datatransferpb.NewDataTransferServiceClient(connPool),
399		CallOptions:      &client.CallOptions,
400	}
401	c.setGoogleClientInfo()
402
403	client.internalClient = c
404
405	return &client, nil
406}
407
408// Connection returns a connection to the API service.
409//
410// Deprecated.
411func (c *gRPCClient) Connection() *grpc.ClientConn {
412	return c.connPool.Conn()
413}
414
415// setGoogleClientInfo sets the name and version of the application in
416// the `x-goog-api-client` header passed on each request. Intended for
417// use by Google-written clients.
418func (c *gRPCClient) setGoogleClientInfo(keyval ...string) {
419	kv := append([]string{"gl-go", versionGo()}, keyval...)
420	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
421	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
422}
423
424// Close closes the connection to the API service. The user should invoke this when
425// the client is no longer required.
426func (c *gRPCClient) Close() error {
427	return c.connPool.Close()
428}
429
430func (c *gRPCClient) GetDataSource(ctx context.Context, req *datatransferpb.GetDataSourceRequest, opts ...gax.CallOption) (*datatransferpb.DataSource, error) {
431	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
432		cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond)
433		defer cancel()
434		ctx = cctx
435	}
436	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
437	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
438	opts = append((*c.CallOptions).GetDataSource[0:len((*c.CallOptions).GetDataSource):len((*c.CallOptions).GetDataSource)], opts...)
439	var resp *datatransferpb.DataSource
440	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
441		var err error
442		resp, err = c.client.GetDataSource(ctx, req, settings.GRPC...)
443		return err
444	}, opts...)
445	if err != nil {
446		return nil, err
447	}
448	return resp, nil
449}
450
451func (c *gRPCClient) ListDataSources(ctx context.Context, req *datatransferpb.ListDataSourcesRequest, opts ...gax.CallOption) *DataSourceIterator {
452	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
453	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
454	opts = append((*c.CallOptions).ListDataSources[0:len((*c.CallOptions).ListDataSources):len((*c.CallOptions).ListDataSources)], opts...)
455	it := &DataSourceIterator{}
456	req = proto.Clone(req).(*datatransferpb.ListDataSourcesRequest)
457	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.DataSource, string, error) {
458		resp := &datatransferpb.ListDataSourcesResponse{}
459		if pageToken != "" {
460			req.PageToken = pageToken
461		}
462		if pageSize > math.MaxInt32 {
463			req.PageSize = math.MaxInt32
464		} else if pageSize != 0 {
465			req.PageSize = int32(pageSize)
466		}
467		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
468			var err error
469			resp, err = c.client.ListDataSources(ctx, req, settings.GRPC...)
470			return err
471		}, opts...)
472		if err != nil {
473			return nil, "", err
474		}
475
476		it.Response = resp
477		return resp.GetDataSources(), resp.GetNextPageToken(), nil
478	}
479	fetch := func(pageSize int, pageToken string) (string, error) {
480		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
481		if err != nil {
482			return "", err
483		}
484		it.items = append(it.items, items...)
485		return nextPageToken, nil
486	}
487
488	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
489	it.pageInfo.MaxSize = int(req.GetPageSize())
490	it.pageInfo.Token = req.GetPageToken()
491
492	return it
493}
494
495func (c *gRPCClient) CreateTransferConfig(ctx context.Context, req *datatransferpb.CreateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
496	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
497		cctx, cancel := context.WithTimeout(ctx, 30000*time.Millisecond)
498		defer cancel()
499		ctx = cctx
500	}
501	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
502	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
503	opts = append((*c.CallOptions).CreateTransferConfig[0:len((*c.CallOptions).CreateTransferConfig):len((*c.CallOptions).CreateTransferConfig)], opts...)
504	var resp *datatransferpb.TransferConfig
505	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
506		var err error
507		resp, err = c.client.CreateTransferConfig(ctx, req, settings.GRPC...)
508		return err
509	}, opts...)
510	if err != nil {
511		return nil, err
512	}
513	return resp, nil
514}
515
516func (c *gRPCClient) UpdateTransferConfig(ctx context.Context, req *datatransferpb.UpdateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
517	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
518		cctx, cancel := context.WithTimeout(ctx, 30000*time.Millisecond)
519		defer cancel()
520		ctx = cctx
521	}
522	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "transfer_config.name", url.QueryEscape(req.GetTransferConfig().GetName())))
523	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
524	opts = append((*c.CallOptions).UpdateTransferConfig[0:len((*c.CallOptions).UpdateTransferConfig):len((*c.CallOptions).UpdateTransferConfig)], opts...)
525	var resp *datatransferpb.TransferConfig
526	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
527		var err error
528		resp, err = c.client.UpdateTransferConfig(ctx, req, settings.GRPC...)
529		return err
530	}, opts...)
531	if err != nil {
532		return nil, err
533	}
534	return resp, nil
535}
536
537func (c *gRPCClient) DeleteTransferConfig(ctx context.Context, req *datatransferpb.DeleteTransferConfigRequest, opts ...gax.CallOption) error {
538	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
539		cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond)
540		defer cancel()
541		ctx = cctx
542	}
543	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
544	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
545	opts = append((*c.CallOptions).DeleteTransferConfig[0:len((*c.CallOptions).DeleteTransferConfig):len((*c.CallOptions).DeleteTransferConfig)], opts...)
546	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
547		var err error
548		_, err = c.client.DeleteTransferConfig(ctx, req, settings.GRPC...)
549		return err
550	}, opts...)
551	return err
552}
553
554func (c *gRPCClient) GetTransferConfig(ctx context.Context, req *datatransferpb.GetTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
555	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
556		cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond)
557		defer cancel()
558		ctx = cctx
559	}
560	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
561	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
562	opts = append((*c.CallOptions).GetTransferConfig[0:len((*c.CallOptions).GetTransferConfig):len((*c.CallOptions).GetTransferConfig)], opts...)
563	var resp *datatransferpb.TransferConfig
564	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
565		var err error
566		resp, err = c.client.GetTransferConfig(ctx, req, settings.GRPC...)
567		return err
568	}, opts...)
569	if err != nil {
570		return nil, err
571	}
572	return resp, nil
573}
574
575func (c *gRPCClient) ListTransferConfigs(ctx context.Context, req *datatransferpb.ListTransferConfigsRequest, opts ...gax.CallOption) *TransferConfigIterator {
576	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
577	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
578	opts = append((*c.CallOptions).ListTransferConfigs[0:len((*c.CallOptions).ListTransferConfigs):len((*c.CallOptions).ListTransferConfigs)], opts...)
579	it := &TransferConfigIterator{}
580	req = proto.Clone(req).(*datatransferpb.ListTransferConfigsRequest)
581	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferConfig, string, error) {
582		resp := &datatransferpb.ListTransferConfigsResponse{}
583		if pageToken != "" {
584			req.PageToken = pageToken
585		}
586		if pageSize > math.MaxInt32 {
587			req.PageSize = math.MaxInt32
588		} else if pageSize != 0 {
589			req.PageSize = int32(pageSize)
590		}
591		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
592			var err error
593			resp, err = c.client.ListTransferConfigs(ctx, req, settings.GRPC...)
594			return err
595		}, opts...)
596		if err != nil {
597			return nil, "", err
598		}
599
600		it.Response = resp
601		return resp.GetTransferConfigs(), resp.GetNextPageToken(), nil
602	}
603	fetch := func(pageSize int, pageToken string) (string, error) {
604		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
605		if err != nil {
606			return "", err
607		}
608		it.items = append(it.items, items...)
609		return nextPageToken, nil
610	}
611
612	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
613	it.pageInfo.MaxSize = int(req.GetPageSize())
614	it.pageInfo.Token = req.GetPageToken()
615
616	return it
617}
618
619func (c *gRPCClient) ScheduleTransferRuns(ctx context.Context, req *datatransferpb.ScheduleTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.ScheduleTransferRunsResponse, error) {
620	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
621		cctx, cancel := context.WithTimeout(ctx, 30000*time.Millisecond)
622		defer cancel()
623		ctx = cctx
624	}
625	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
626	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
627	opts = append((*c.CallOptions).ScheduleTransferRuns[0:len((*c.CallOptions).ScheduleTransferRuns):len((*c.CallOptions).ScheduleTransferRuns)], opts...)
628	var resp *datatransferpb.ScheduleTransferRunsResponse
629	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
630		var err error
631		resp, err = c.client.ScheduleTransferRuns(ctx, req, settings.GRPC...)
632		return err
633	}, opts...)
634	if err != nil {
635		return nil, err
636	}
637	return resp, nil
638}
639
640func (c *gRPCClient) StartManualTransferRuns(ctx context.Context, req *datatransferpb.StartManualTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.StartManualTransferRunsResponse, error) {
641	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
642	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
643	opts = append((*c.CallOptions).StartManualTransferRuns[0:len((*c.CallOptions).StartManualTransferRuns):len((*c.CallOptions).StartManualTransferRuns)], opts...)
644	var resp *datatransferpb.StartManualTransferRunsResponse
645	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
646		var err error
647		resp, err = c.client.StartManualTransferRuns(ctx, req, settings.GRPC...)
648		return err
649	}, opts...)
650	if err != nil {
651		return nil, err
652	}
653	return resp, nil
654}
655
656func (c *gRPCClient) GetTransferRun(ctx context.Context, req *datatransferpb.GetTransferRunRequest, opts ...gax.CallOption) (*datatransferpb.TransferRun, error) {
657	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
658		cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond)
659		defer cancel()
660		ctx = cctx
661	}
662	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
663	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
664	opts = append((*c.CallOptions).GetTransferRun[0:len((*c.CallOptions).GetTransferRun):len((*c.CallOptions).GetTransferRun)], opts...)
665	var resp *datatransferpb.TransferRun
666	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
667		var err error
668		resp, err = c.client.GetTransferRun(ctx, req, settings.GRPC...)
669		return err
670	}, opts...)
671	if err != nil {
672		return nil, err
673	}
674	return resp, nil
675}
676
677func (c *gRPCClient) DeleteTransferRun(ctx context.Context, req *datatransferpb.DeleteTransferRunRequest, opts ...gax.CallOption) error {
678	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
679		cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond)
680		defer cancel()
681		ctx = cctx
682	}
683	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
684	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
685	opts = append((*c.CallOptions).DeleteTransferRun[0:len((*c.CallOptions).DeleteTransferRun):len((*c.CallOptions).DeleteTransferRun)], opts...)
686	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
687		var err error
688		_, err = c.client.DeleteTransferRun(ctx, req, settings.GRPC...)
689		return err
690	}, opts...)
691	return err
692}
693
694func (c *gRPCClient) ListTransferRuns(ctx context.Context, req *datatransferpb.ListTransferRunsRequest, opts ...gax.CallOption) *TransferRunIterator {
695	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
696	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
697	opts = append((*c.CallOptions).ListTransferRuns[0:len((*c.CallOptions).ListTransferRuns):len((*c.CallOptions).ListTransferRuns)], opts...)
698	it := &TransferRunIterator{}
699	req = proto.Clone(req).(*datatransferpb.ListTransferRunsRequest)
700	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferRun, string, error) {
701		resp := &datatransferpb.ListTransferRunsResponse{}
702		if pageToken != "" {
703			req.PageToken = pageToken
704		}
705		if pageSize > math.MaxInt32 {
706			req.PageSize = math.MaxInt32
707		} else if pageSize != 0 {
708			req.PageSize = int32(pageSize)
709		}
710		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
711			var err error
712			resp, err = c.client.ListTransferRuns(ctx, req, settings.GRPC...)
713			return err
714		}, opts...)
715		if err != nil {
716			return nil, "", err
717		}
718
719		it.Response = resp
720		return resp.GetTransferRuns(), resp.GetNextPageToken(), nil
721	}
722	fetch := func(pageSize int, pageToken string) (string, error) {
723		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
724		if err != nil {
725			return "", err
726		}
727		it.items = append(it.items, items...)
728		return nextPageToken, nil
729	}
730
731	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
732	it.pageInfo.MaxSize = int(req.GetPageSize())
733	it.pageInfo.Token = req.GetPageToken()
734
735	return it
736}
737
738func (c *gRPCClient) ListTransferLogs(ctx context.Context, req *datatransferpb.ListTransferLogsRequest, opts ...gax.CallOption) *TransferMessageIterator {
739	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
740	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
741	opts = append((*c.CallOptions).ListTransferLogs[0:len((*c.CallOptions).ListTransferLogs):len((*c.CallOptions).ListTransferLogs)], opts...)
742	it := &TransferMessageIterator{}
743	req = proto.Clone(req).(*datatransferpb.ListTransferLogsRequest)
744	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferMessage, string, error) {
745		resp := &datatransferpb.ListTransferLogsResponse{}
746		if pageToken != "" {
747			req.PageToken = pageToken
748		}
749		if pageSize > math.MaxInt32 {
750			req.PageSize = math.MaxInt32
751		} else if pageSize != 0 {
752			req.PageSize = int32(pageSize)
753		}
754		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
755			var err error
756			resp, err = c.client.ListTransferLogs(ctx, req, settings.GRPC...)
757			return err
758		}, opts...)
759		if err != nil {
760			return nil, "", err
761		}
762
763		it.Response = resp
764		return resp.GetTransferMessages(), resp.GetNextPageToken(), nil
765	}
766	fetch := func(pageSize int, pageToken string) (string, error) {
767		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
768		if err != nil {
769			return "", err
770		}
771		it.items = append(it.items, items...)
772		return nextPageToken, nil
773	}
774
775	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
776	it.pageInfo.MaxSize = int(req.GetPageSize())
777	it.pageInfo.Token = req.GetPageToken()
778
779	return it
780}
781
782func (c *gRPCClient) CheckValidCreds(ctx context.Context, req *datatransferpb.CheckValidCredsRequest, opts ...gax.CallOption) (*datatransferpb.CheckValidCredsResponse, error) {
783	if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines {
784		cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond)
785		defer cancel()
786		ctx = cctx
787	}
788	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
789	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
790	opts = append((*c.CallOptions).CheckValidCreds[0:len((*c.CallOptions).CheckValidCreds):len((*c.CallOptions).CheckValidCreds)], opts...)
791	var resp *datatransferpb.CheckValidCredsResponse
792	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
793		var err error
794		resp, err = c.client.CheckValidCreds(ctx, req, settings.GRPC...)
795		return err
796	}, opts...)
797	if err != nil {
798		return nil, err
799	}
800	return resp, nil
801}
802
803// DataSourceIterator manages a stream of *datatransferpb.DataSource.
804type DataSourceIterator struct {
805	items    []*datatransferpb.DataSource
806	pageInfo *iterator.PageInfo
807	nextFunc func() error
808
809	// Response is the raw response for the current page.
810	// It must be cast to the RPC response type.
811	// Calling Next() or InternalFetch() updates this value.
812	Response interface{}
813
814	// InternalFetch is for use by the Google Cloud Libraries only.
815	// It is not part of the stable interface of this package.
816	//
817	// InternalFetch returns results from a single call to the underlying RPC.
818	// The number of results is no greater than pageSize.
819	// If there are no more results, nextPageToken is empty and err is nil.
820	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.DataSource, nextPageToken string, err error)
821}
822
823// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
824func (it *DataSourceIterator) PageInfo() *iterator.PageInfo {
825	return it.pageInfo
826}
827
828// Next returns the next result. Its second return value is iterator.Done if there are no more
829// results. Once Next returns Done, all subsequent calls will return Done.
830func (it *DataSourceIterator) Next() (*datatransferpb.DataSource, error) {
831	var item *datatransferpb.DataSource
832	if err := it.nextFunc(); err != nil {
833		return item, err
834	}
835	item = it.items[0]
836	it.items = it.items[1:]
837	return item, nil
838}
839
840func (it *DataSourceIterator) bufLen() int {
841	return len(it.items)
842}
843
844func (it *DataSourceIterator) takeBuf() interface{} {
845	b := it.items
846	it.items = nil
847	return b
848}
849
850// TransferConfigIterator manages a stream of *datatransferpb.TransferConfig.
851type TransferConfigIterator struct {
852	items    []*datatransferpb.TransferConfig
853	pageInfo *iterator.PageInfo
854	nextFunc func() error
855
856	// Response is the raw response for the current page.
857	// It must be cast to the RPC response type.
858	// Calling Next() or InternalFetch() updates this value.
859	Response interface{}
860
861	// InternalFetch is for use by the Google Cloud Libraries only.
862	// It is not part of the stable interface of this package.
863	//
864	// InternalFetch returns results from a single call to the underlying RPC.
865	// The number of results is no greater than pageSize.
866	// If there are no more results, nextPageToken is empty and err is nil.
867	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferConfig, nextPageToken string, err error)
868}
869
870// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
871func (it *TransferConfigIterator) PageInfo() *iterator.PageInfo {
872	return it.pageInfo
873}
874
875// Next returns the next result. Its second return value is iterator.Done if there are no more
876// results. Once Next returns Done, all subsequent calls will return Done.
877func (it *TransferConfigIterator) Next() (*datatransferpb.TransferConfig, error) {
878	var item *datatransferpb.TransferConfig
879	if err := it.nextFunc(); err != nil {
880		return item, err
881	}
882	item = it.items[0]
883	it.items = it.items[1:]
884	return item, nil
885}
886
887func (it *TransferConfigIterator) bufLen() int {
888	return len(it.items)
889}
890
891func (it *TransferConfigIterator) takeBuf() interface{} {
892	b := it.items
893	it.items = nil
894	return b
895}
896
897// TransferMessageIterator manages a stream of *datatransferpb.TransferMessage.
898type TransferMessageIterator struct {
899	items    []*datatransferpb.TransferMessage
900	pageInfo *iterator.PageInfo
901	nextFunc func() error
902
903	// Response is the raw response for the current page.
904	// It must be cast to the RPC response type.
905	// Calling Next() or InternalFetch() updates this value.
906	Response interface{}
907
908	// InternalFetch is for use by the Google Cloud Libraries only.
909	// It is not part of the stable interface of this package.
910	//
911	// InternalFetch returns results from a single call to the underlying RPC.
912	// The number of results is no greater than pageSize.
913	// If there are no more results, nextPageToken is empty and err is nil.
914	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferMessage, nextPageToken string, err error)
915}
916
917// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
918func (it *TransferMessageIterator) PageInfo() *iterator.PageInfo {
919	return it.pageInfo
920}
921
922// Next returns the next result. Its second return value is iterator.Done if there are no more
923// results. Once Next returns Done, all subsequent calls will return Done.
924func (it *TransferMessageIterator) Next() (*datatransferpb.TransferMessage, error) {
925	var item *datatransferpb.TransferMessage
926	if err := it.nextFunc(); err != nil {
927		return item, err
928	}
929	item = it.items[0]
930	it.items = it.items[1:]
931	return item, nil
932}
933
934func (it *TransferMessageIterator) bufLen() int {
935	return len(it.items)
936}
937
938func (it *TransferMessageIterator) takeBuf() interface{} {
939	b := it.items
940	it.items = nil
941	return b
942}
943
944// TransferRunIterator manages a stream of *datatransferpb.TransferRun.
945type TransferRunIterator struct {
946	items    []*datatransferpb.TransferRun
947	pageInfo *iterator.PageInfo
948	nextFunc func() error
949
950	// Response is the raw response for the current page.
951	// It must be cast to the RPC response type.
952	// Calling Next() or InternalFetch() updates this value.
953	Response interface{}
954
955	// InternalFetch is for use by the Google Cloud Libraries only.
956	// It is not part of the stable interface of this package.
957	//
958	// InternalFetch returns results from a single call to the underlying RPC.
959	// The number of results is no greater than pageSize.
960	// If there are no more results, nextPageToken is empty and err is nil.
961	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferRun, nextPageToken string, err error)
962}
963
964// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
965func (it *TransferRunIterator) PageInfo() *iterator.PageInfo {
966	return it.pageInfo
967}
968
969// Next returns the next result. Its second return value is iterator.Done if there are no more
970// results. Once Next returns Done, all subsequent calls will return Done.
971func (it *TransferRunIterator) Next() (*datatransferpb.TransferRun, error) {
972	var item *datatransferpb.TransferRun
973	if err := it.nextFunc(); err != nil {
974		return item, err
975	}
976	item = it.items[0]
977	it.items = it.items[1:]
978	return item, nil
979}
980
981func (it *TransferRunIterator) bufLen() int {
982	return len(it.items)
983}
984
985func (it *TransferRunIterator) takeBuf() interface{} {
986	b := it.items
987	it.items = nil
988	return b
989}
990