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