1// Copyright 2019 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 gapic-generator. DO NOT EDIT.
16
17package datatransfer
18
19import (
20	"context"
21	"fmt"
22	"math"
23	"net/url"
24	"time"
25
26	"github.com/golang/protobuf/proto"
27	gax "github.com/googleapis/gax-go/v2"
28	"google.golang.org/api/iterator"
29	"google.golang.org/api/option"
30	"google.golang.org/api/transport"
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)
36
37// CallOptions contains the retry settings for each method of Client.
38type CallOptions struct {
39	GetDataSource           []gax.CallOption
40	ListDataSources         []gax.CallOption
41	CreateTransferConfig    []gax.CallOption
42	UpdateTransferConfig    []gax.CallOption
43	DeleteTransferConfig    []gax.CallOption
44	GetTransferConfig       []gax.CallOption
45	ListTransferConfigs     []gax.CallOption
46	ScheduleTransferRuns    []gax.CallOption
47	GetTransferRun          []gax.CallOption
48	DeleteTransferRun       []gax.CallOption
49	ListTransferRuns        []gax.CallOption
50	ListTransferLogs        []gax.CallOption
51	CheckValidCreds         []gax.CallOption
52	StartManualTransferRuns []gax.CallOption
53}
54
55func defaultClientOptions() []option.ClientOption {
56	return []option.ClientOption{
57		option.WithEndpoint("bigquerydatatransfer.googleapis.com:443"),
58		option.WithScopes(DefaultAuthScopes()...),
59		option.WithGRPCDialOption(grpc.WithDefaultCallOptions(
60			grpc.MaxCallRecvMsgSize(math.MaxInt32))),
61	}
62}
63
64func defaultCallOptions() *CallOptions {
65	retry := map[[2]string][]gax.CallOption{
66		{"default", "idempotent"}: {
67			gax.WithRetry(func() gax.Retryer {
68				return gax.OnCodes([]codes.Code{
69					codes.DeadlineExceeded,
70					codes.Unavailable,
71				}, gax.Backoff{
72					Initial:    100 * time.Millisecond,
73					Max:        60000 * time.Millisecond,
74					Multiplier: 1.3,
75				})
76			}),
77		},
78	}
79	return &CallOptions{
80		GetDataSource:           retry[[2]string{"default", "idempotent"}],
81		ListDataSources:         retry[[2]string{"default", "idempotent"}],
82		CreateTransferConfig:    retry[[2]string{"default", "non_idempotent"}],
83		UpdateTransferConfig:    retry[[2]string{"default", "non_idempotent"}],
84		DeleteTransferConfig:    retry[[2]string{"default", "idempotent"}],
85		GetTransferConfig:       retry[[2]string{"default", "idempotent"}],
86		ListTransferConfigs:     retry[[2]string{"default", "idempotent"}],
87		ScheduleTransferRuns:    retry[[2]string{"default", "non_idempotent"}],
88		GetTransferRun:          retry[[2]string{"default", "idempotent"}],
89		DeleteTransferRun:       retry[[2]string{"default", "idempotent"}],
90		ListTransferRuns:        retry[[2]string{"default", "idempotent"}],
91		ListTransferLogs:        retry[[2]string{"default", "idempotent"}],
92		CheckValidCreds:         retry[[2]string{"default", "idempotent"}],
93		StartManualTransferRuns: retry[[2]string{"default", "non_idempotent"}],
94	}
95}
96
97// Client is a client for interacting with BigQuery Data Transfer API.
98//
99// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
100type Client struct {
101	// The connection to the service.
102	conn *grpc.ClientConn
103
104	// The gRPC API client.
105	client datatransferpb.DataTransferServiceClient
106
107	// The call options for this service.
108	CallOptions *CallOptions
109
110	// The x-goog-* metadata to be sent with each request.
111	xGoogMetadata metadata.MD
112}
113
114// NewClient creates a new data transfer service client.
115//
116// The Google BigQuery Data Transfer Service API enables BigQuery users to
117// configure the transfer of their data from other Google Products into
118// BigQuery. This service contains methods that are end user exposed. It backs
119// up the frontend.
120func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
121	conn, err := transport.DialGRPC(ctx, append(defaultClientOptions(), opts...)...)
122	if err != nil {
123		return nil, err
124	}
125	c := &Client{
126		conn:        conn,
127		CallOptions: defaultCallOptions(),
128
129		client: datatransferpb.NewDataTransferServiceClient(conn),
130	}
131	c.setGoogleClientInfo()
132	return c, nil
133}
134
135// Connection returns the client's connection to the API service.
136func (c *Client) Connection() *grpc.ClientConn {
137	return c.conn
138}
139
140// Close closes the connection to the API service. The user should invoke this when
141// the client is no longer required.
142func (c *Client) Close() error {
143	return c.conn.Close()
144}
145
146// setGoogleClientInfo sets the name and version of the application in
147// the `x-goog-api-client` header passed on each request. Intended for
148// use by Google-written clients.
149func (c *Client) setGoogleClientInfo(keyval ...string) {
150	kv := append([]string{"gl-go", versionGo()}, keyval...)
151	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
152	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
153}
154
155// GetDataSource retrieves a supported data source and returns its settings,
156// which can be used for UI rendering.
157func (c *Client) GetDataSource(ctx context.Context, req *datatransferpb.GetDataSourceRequest, opts ...gax.CallOption) (*datatransferpb.DataSource, 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.GetDataSource[0:len(c.CallOptions.GetDataSource):len(c.CallOptions.GetDataSource)], opts...)
161	var resp *datatransferpb.DataSource
162	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
163		var err error
164		resp, err = c.client.GetDataSource(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// ListDataSources lists supported data sources and returns their settings,
174// which can be used for UI rendering.
175func (c *Client) ListDataSources(ctx context.Context, req *datatransferpb.ListDataSourcesRequest, opts ...gax.CallOption) *DataSourceIterator {
176	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
177	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
178	opts = append(c.CallOptions.ListDataSources[0:len(c.CallOptions.ListDataSources):len(c.CallOptions.ListDataSources)], opts...)
179	it := &DataSourceIterator{}
180	req = proto.Clone(req).(*datatransferpb.ListDataSourcesRequest)
181	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.DataSource, string, error) {
182		var resp *datatransferpb.ListDataSourcesResponse
183		req.PageToken = pageToken
184		if pageSize > math.MaxInt32 {
185			req.PageSize = math.MaxInt32
186		} else {
187			req.PageSize = int32(pageSize)
188		}
189		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
190			var err error
191			resp, err = c.client.ListDataSources(ctx, req, settings.GRPC...)
192			return err
193		}, opts...)
194		if err != nil {
195			return nil, "", err
196		}
197		return resp.DataSources, resp.NextPageToken, nil
198	}
199	fetch := func(pageSize int, pageToken string) (string, error) {
200		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
201		if err != nil {
202			return "", err
203		}
204		it.items = append(it.items, items...)
205		return nextPageToken, nil
206	}
207	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
208	it.pageInfo.MaxSize = int(req.PageSize)
209	it.pageInfo.Token = req.PageToken
210	return it
211}
212
213// CreateTransferConfig creates a new data transfer configuration.
214func (c *Client) CreateTransferConfig(ctx context.Context, req *datatransferpb.CreateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
215	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
216	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
217	opts = append(c.CallOptions.CreateTransferConfig[0:len(c.CallOptions.CreateTransferConfig):len(c.CallOptions.CreateTransferConfig)], opts...)
218	var resp *datatransferpb.TransferConfig
219	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
220		var err error
221		resp, err = c.client.CreateTransferConfig(ctx, req, settings.GRPC...)
222		return err
223	}, opts...)
224	if err != nil {
225		return nil, err
226	}
227	return resp, nil
228}
229
230// UpdateTransferConfig updates a data transfer configuration.
231// All fields must be set, even if they are not updated.
232func (c *Client) UpdateTransferConfig(ctx context.Context, req *datatransferpb.UpdateTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
233	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "transfer_config.name", url.QueryEscape(req.GetTransferConfig().GetName())))
234	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
235	opts = append(c.CallOptions.UpdateTransferConfig[0:len(c.CallOptions.UpdateTransferConfig):len(c.CallOptions.UpdateTransferConfig)], opts...)
236	var resp *datatransferpb.TransferConfig
237	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
238		var err error
239		resp, err = c.client.UpdateTransferConfig(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// DeleteTransferConfig deletes a data transfer configuration,
249// including any associated transfer runs and logs.
250func (c *Client) DeleteTransferConfig(ctx context.Context, req *datatransferpb.DeleteTransferConfigRequest, opts ...gax.CallOption) error {
251	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
252	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
253	opts = append(c.CallOptions.DeleteTransferConfig[0:len(c.CallOptions.DeleteTransferConfig):len(c.CallOptions.DeleteTransferConfig)], opts...)
254	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
255		var err error
256		_, err = c.client.DeleteTransferConfig(ctx, req, settings.GRPC...)
257		return err
258	}, opts...)
259	return err
260}
261
262// GetTransferConfig returns information about a data transfer config.
263func (c *Client) GetTransferConfig(ctx context.Context, req *datatransferpb.GetTransferConfigRequest, opts ...gax.CallOption) (*datatransferpb.TransferConfig, error) {
264	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
265	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
266	opts = append(c.CallOptions.GetTransferConfig[0:len(c.CallOptions.GetTransferConfig):len(c.CallOptions.GetTransferConfig)], opts...)
267	var resp *datatransferpb.TransferConfig
268	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
269		var err error
270		resp, err = c.client.GetTransferConfig(ctx, req, settings.GRPC...)
271		return err
272	}, opts...)
273	if err != nil {
274		return nil, err
275	}
276	return resp, nil
277}
278
279// ListTransferConfigs returns information about all data transfers in the project.
280func (c *Client) ListTransferConfigs(ctx context.Context, req *datatransferpb.ListTransferConfigsRequest, opts ...gax.CallOption) *TransferConfigIterator {
281	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
282	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
283	opts = append(c.CallOptions.ListTransferConfigs[0:len(c.CallOptions.ListTransferConfigs):len(c.CallOptions.ListTransferConfigs)], opts...)
284	it := &TransferConfigIterator{}
285	req = proto.Clone(req).(*datatransferpb.ListTransferConfigsRequest)
286	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferConfig, string, error) {
287		var resp *datatransferpb.ListTransferConfigsResponse
288		req.PageToken = pageToken
289		if pageSize > math.MaxInt32 {
290			req.PageSize = math.MaxInt32
291		} else {
292			req.PageSize = int32(pageSize)
293		}
294		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
295			var err error
296			resp, err = c.client.ListTransferConfigs(ctx, req, settings.GRPC...)
297			return err
298		}, opts...)
299		if err != nil {
300			return nil, "", err
301		}
302		return resp.TransferConfigs, resp.NextPageToken, nil
303	}
304	fetch := func(pageSize int, pageToken string) (string, error) {
305		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
306		if err != nil {
307			return "", err
308		}
309		it.items = append(it.items, items...)
310		return nextPageToken, nil
311	}
312	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
313	it.pageInfo.MaxSize = int(req.PageSize)
314	it.pageInfo.Token = req.PageToken
315	return it
316}
317
318// ScheduleTransferRuns creates transfer runs for a time range [start_time, end_time].
319// For each date - or whatever granularity the data source supports - in the
320// range, one transfer run is created.
321// Note that runs are created per UTC time in the time range.
322// DEPRECATED: use StartManualTransferRuns instead.
323func (c *Client) ScheduleTransferRuns(ctx context.Context, req *datatransferpb.ScheduleTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.ScheduleTransferRunsResponse, error) {
324	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
325	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
326	opts = append(c.CallOptions.ScheduleTransferRuns[0:len(c.CallOptions.ScheduleTransferRuns):len(c.CallOptions.ScheduleTransferRuns)], opts...)
327	var resp *datatransferpb.ScheduleTransferRunsResponse
328	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
329		var err error
330		resp, err = c.client.ScheduleTransferRuns(ctx, req, settings.GRPC...)
331		return err
332	}, opts...)
333	if err != nil {
334		return nil, err
335	}
336	return resp, nil
337}
338
339// GetTransferRun returns information about the particular transfer run.
340func (c *Client) GetTransferRun(ctx context.Context, req *datatransferpb.GetTransferRunRequest, opts ...gax.CallOption) (*datatransferpb.TransferRun, error) {
341	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
342	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
343	opts = append(c.CallOptions.GetTransferRun[0:len(c.CallOptions.GetTransferRun):len(c.CallOptions.GetTransferRun)], opts...)
344	var resp *datatransferpb.TransferRun
345	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
346		var err error
347		resp, err = c.client.GetTransferRun(ctx, req, settings.GRPC...)
348		return err
349	}, opts...)
350	if err != nil {
351		return nil, err
352	}
353	return resp, nil
354}
355
356// DeleteTransferRun deletes the specified transfer run.
357func (c *Client) DeleteTransferRun(ctx context.Context, req *datatransferpb.DeleteTransferRunRequest, opts ...gax.CallOption) error {
358	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
359	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
360	opts = append(c.CallOptions.DeleteTransferRun[0:len(c.CallOptions.DeleteTransferRun):len(c.CallOptions.DeleteTransferRun)], opts...)
361	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
362		var err error
363		_, err = c.client.DeleteTransferRun(ctx, req, settings.GRPC...)
364		return err
365	}, opts...)
366	return err
367}
368
369// ListTransferRuns returns information about running and completed jobs.
370func (c *Client) ListTransferRuns(ctx context.Context, req *datatransferpb.ListTransferRunsRequest, opts ...gax.CallOption) *TransferRunIterator {
371	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
372	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
373	opts = append(c.CallOptions.ListTransferRuns[0:len(c.CallOptions.ListTransferRuns):len(c.CallOptions.ListTransferRuns)], opts...)
374	it := &TransferRunIterator{}
375	req = proto.Clone(req).(*datatransferpb.ListTransferRunsRequest)
376	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferRun, string, error) {
377		var resp *datatransferpb.ListTransferRunsResponse
378		req.PageToken = pageToken
379		if pageSize > math.MaxInt32 {
380			req.PageSize = math.MaxInt32
381		} else {
382			req.PageSize = int32(pageSize)
383		}
384		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
385			var err error
386			resp, err = c.client.ListTransferRuns(ctx, req, settings.GRPC...)
387			return err
388		}, opts...)
389		if err != nil {
390			return nil, "", err
391		}
392		return resp.TransferRuns, resp.NextPageToken, nil
393	}
394	fetch := func(pageSize int, pageToken string) (string, error) {
395		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
396		if err != nil {
397			return "", err
398		}
399		it.items = append(it.items, items...)
400		return nextPageToken, nil
401	}
402	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
403	it.pageInfo.MaxSize = int(req.PageSize)
404	it.pageInfo.Token = req.PageToken
405	return it
406}
407
408// ListTransferLogs returns user facing log messages for the data transfer run.
409func (c *Client) ListTransferLogs(ctx context.Context, req *datatransferpb.ListTransferLogsRequest, opts ...gax.CallOption) *TransferMessageIterator {
410	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
411	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
412	opts = append(c.CallOptions.ListTransferLogs[0:len(c.CallOptions.ListTransferLogs):len(c.CallOptions.ListTransferLogs)], opts...)
413	it := &TransferMessageIterator{}
414	req = proto.Clone(req).(*datatransferpb.ListTransferLogsRequest)
415	it.InternalFetch = func(pageSize int, pageToken string) ([]*datatransferpb.TransferMessage, string, error) {
416		var resp *datatransferpb.ListTransferLogsResponse
417		req.PageToken = pageToken
418		if pageSize > math.MaxInt32 {
419			req.PageSize = math.MaxInt32
420		} else {
421			req.PageSize = int32(pageSize)
422		}
423		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
424			var err error
425			resp, err = c.client.ListTransferLogs(ctx, req, settings.GRPC...)
426			return err
427		}, opts...)
428		if err != nil {
429			return nil, "", err
430		}
431		return resp.TransferMessages, resp.NextPageToken, nil
432	}
433	fetch := func(pageSize int, pageToken string) (string, error) {
434		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
435		if err != nil {
436			return "", err
437		}
438		it.items = append(it.items, items...)
439		return nextPageToken, nil
440	}
441	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
442	it.pageInfo.MaxSize = int(req.PageSize)
443	it.pageInfo.Token = req.PageToken
444	return it
445}
446
447// CheckValidCreds returns true if valid credentials exist for the given data source and
448// requesting user.
449// Some data sources doesn't support service account, so we need to talk to
450// them on behalf of the end user. This API just checks whether we have OAuth
451// token for the particular user, which is a pre-requisite before user can
452// create a transfer config.
453func (c *Client) CheckValidCreds(ctx context.Context, req *datatransferpb.CheckValidCredsRequest, opts ...gax.CallOption) (*datatransferpb.CheckValidCredsResponse, error) {
454	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
455	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
456	opts = append(c.CallOptions.CheckValidCreds[0:len(c.CallOptions.CheckValidCreds):len(c.CallOptions.CheckValidCreds)], opts...)
457	var resp *datatransferpb.CheckValidCredsResponse
458	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
459		var err error
460		resp, err = c.client.CheckValidCreds(ctx, req, settings.GRPC...)
461		return err
462	}, opts...)
463	if err != nil {
464		return nil, err
465	}
466	return resp, nil
467}
468
469// StartManualTransferRuns start manual transfer runs to be executed now with schedule_time equal to
470// current time. The transfer runs can be created for a time range where the
471// run_time is between start_time (inclusive) and end_time (exclusive), or for
472// a specific run_time.
473func (c *Client) StartManualTransferRuns(ctx context.Context, req *datatransferpb.StartManualTransferRunsRequest, opts ...gax.CallOption) (*datatransferpb.StartManualTransferRunsResponse, error) {
474	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
475	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
476	opts = append(c.CallOptions.StartManualTransferRuns[0:len(c.CallOptions.StartManualTransferRuns):len(c.CallOptions.StartManualTransferRuns)], opts...)
477	var resp *datatransferpb.StartManualTransferRunsResponse
478	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
479		var err error
480		resp, err = c.client.StartManualTransferRuns(ctx, req, settings.GRPC...)
481		return err
482	}, opts...)
483	if err != nil {
484		return nil, err
485	}
486	return resp, nil
487}
488
489// DataSourceIterator manages a stream of *datatransferpb.DataSource.
490type DataSourceIterator struct {
491	items    []*datatransferpb.DataSource
492	pageInfo *iterator.PageInfo
493	nextFunc func() error
494
495	// InternalFetch is for use by the Google Cloud Libraries only.
496	// It is not part of the stable interface of this package.
497	//
498	// InternalFetch returns results from a single call to the underlying RPC.
499	// The number of results is no greater than pageSize.
500	// If there are no more results, nextPageToken is empty and err is nil.
501	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.DataSource, nextPageToken string, err error)
502}
503
504// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
505func (it *DataSourceIterator) PageInfo() *iterator.PageInfo {
506	return it.pageInfo
507}
508
509// Next returns the next result. Its second return value is iterator.Done if there are no more
510// results. Once Next returns Done, all subsequent calls will return Done.
511func (it *DataSourceIterator) Next() (*datatransferpb.DataSource, error) {
512	var item *datatransferpb.DataSource
513	if err := it.nextFunc(); err != nil {
514		return item, err
515	}
516	item = it.items[0]
517	it.items = it.items[1:]
518	return item, nil
519}
520
521func (it *DataSourceIterator) bufLen() int {
522	return len(it.items)
523}
524
525func (it *DataSourceIterator) takeBuf() interface{} {
526	b := it.items
527	it.items = nil
528	return b
529}
530
531// TransferConfigIterator manages a stream of *datatransferpb.TransferConfig.
532type TransferConfigIterator struct {
533	items    []*datatransferpb.TransferConfig
534	pageInfo *iterator.PageInfo
535	nextFunc func() error
536
537	// InternalFetch is for use by the Google Cloud Libraries only.
538	// It is not part of the stable interface of this package.
539	//
540	// InternalFetch returns results from a single call to the underlying RPC.
541	// The number of results is no greater than pageSize.
542	// If there are no more results, nextPageToken is empty and err is nil.
543	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferConfig, nextPageToken string, err error)
544}
545
546// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
547func (it *TransferConfigIterator) PageInfo() *iterator.PageInfo {
548	return it.pageInfo
549}
550
551// Next returns the next result. Its second return value is iterator.Done if there are no more
552// results. Once Next returns Done, all subsequent calls will return Done.
553func (it *TransferConfigIterator) Next() (*datatransferpb.TransferConfig, error) {
554	var item *datatransferpb.TransferConfig
555	if err := it.nextFunc(); err != nil {
556		return item, err
557	}
558	item = it.items[0]
559	it.items = it.items[1:]
560	return item, nil
561}
562
563func (it *TransferConfigIterator) bufLen() int {
564	return len(it.items)
565}
566
567func (it *TransferConfigIterator) takeBuf() interface{} {
568	b := it.items
569	it.items = nil
570	return b
571}
572
573// TransferMessageIterator manages a stream of *datatransferpb.TransferMessage.
574type TransferMessageIterator struct {
575	items    []*datatransferpb.TransferMessage
576	pageInfo *iterator.PageInfo
577	nextFunc func() error
578
579	// InternalFetch is for use by the Google Cloud Libraries only.
580	// It is not part of the stable interface of this package.
581	//
582	// InternalFetch returns results from a single call to the underlying RPC.
583	// The number of results is no greater than pageSize.
584	// If there are no more results, nextPageToken is empty and err is nil.
585	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferMessage, nextPageToken string, err error)
586}
587
588// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
589func (it *TransferMessageIterator) PageInfo() *iterator.PageInfo {
590	return it.pageInfo
591}
592
593// Next returns the next result. Its second return value is iterator.Done if there are no more
594// results. Once Next returns Done, all subsequent calls will return Done.
595func (it *TransferMessageIterator) Next() (*datatransferpb.TransferMessage, error) {
596	var item *datatransferpb.TransferMessage
597	if err := it.nextFunc(); err != nil {
598		return item, err
599	}
600	item = it.items[0]
601	it.items = it.items[1:]
602	return item, nil
603}
604
605func (it *TransferMessageIterator) bufLen() int {
606	return len(it.items)
607}
608
609func (it *TransferMessageIterator) takeBuf() interface{} {
610	b := it.items
611	it.items = nil
612	return b
613}
614
615// TransferRunIterator manages a stream of *datatransferpb.TransferRun.
616type TransferRunIterator struct {
617	items    []*datatransferpb.TransferRun
618	pageInfo *iterator.PageInfo
619	nextFunc func() error
620
621	// InternalFetch is for use by the Google Cloud Libraries only.
622	// It is not part of the stable interface of this package.
623	//
624	// InternalFetch returns results from a single call to the underlying RPC.
625	// The number of results is no greater than pageSize.
626	// If there are no more results, nextPageToken is empty and err is nil.
627	InternalFetch func(pageSize int, pageToken string) (results []*datatransferpb.TransferRun, nextPageToken string, err error)
628}
629
630// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
631func (it *TransferRunIterator) PageInfo() *iterator.PageInfo {
632	return it.pageInfo
633}
634
635// Next returns the next result. Its second return value is iterator.Done if there are no more
636// results. Once Next returns Done, all subsequent calls will return Done.
637func (it *TransferRunIterator) Next() (*datatransferpb.TransferRun, error) {
638	var item *datatransferpb.TransferRun
639	if err := it.nextFunc(); err != nil {
640		return item, err
641	}
642	item = it.items[0]
643	it.items = it.items[1:]
644	return item, nil
645}
646
647func (it *TransferRunIterator) bufLen() int {
648	return len(it.items)
649}
650
651func (it *TransferRunIterator) takeBuf() interface{} {
652	b := it.items
653	it.items = nil
654	return b
655}
656