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 dlp
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	dlppb "google.golang.org/genproto/googleapis/privacy/dlp/v2"
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	InspectContent           []gax.CallOption
40	RedactImage              []gax.CallOption
41	DeidentifyContent        []gax.CallOption
42	ReidentifyContent        []gax.CallOption
43	ListInfoTypes            []gax.CallOption
44	CreateInspectTemplate    []gax.CallOption
45	UpdateInspectTemplate    []gax.CallOption
46	GetInspectTemplate       []gax.CallOption
47	ListInspectTemplates     []gax.CallOption
48	DeleteInspectTemplate    []gax.CallOption
49	CreateDeidentifyTemplate []gax.CallOption
50	UpdateDeidentifyTemplate []gax.CallOption
51	GetDeidentifyTemplate    []gax.CallOption
52	ListDeidentifyTemplates  []gax.CallOption
53	DeleteDeidentifyTemplate []gax.CallOption
54	CreateDlpJob             []gax.CallOption
55	ListDlpJobs              []gax.CallOption
56	GetDlpJob                []gax.CallOption
57	DeleteDlpJob             []gax.CallOption
58	CancelDlpJob             []gax.CallOption
59	ListJobTriggers          []gax.CallOption
60	GetJobTrigger            []gax.CallOption
61	DeleteJobTrigger         []gax.CallOption
62	UpdateJobTrigger         []gax.CallOption
63	CreateJobTrigger         []gax.CallOption
64	CreateStoredInfoType     []gax.CallOption
65	UpdateStoredInfoType     []gax.CallOption
66	GetStoredInfoType        []gax.CallOption
67	ListStoredInfoTypes      []gax.CallOption
68	DeleteStoredInfoType     []gax.CallOption
69}
70
71func defaultClientOptions() []option.ClientOption {
72	return []option.ClientOption{
73		option.WithEndpoint("dlp.googleapis.com:443"),
74		option.WithScopes(DefaultAuthScopes()...),
75		option.WithGRPCDialOption(grpc.WithDefaultCallOptions(
76			grpc.MaxCallRecvMsgSize(math.MaxInt32))),
77	}
78}
79
80func defaultCallOptions() *CallOptions {
81	retry := map[[2]string][]gax.CallOption{
82		{"default", "idempotent"}: {
83			gax.WithRetry(func() gax.Retryer {
84				return gax.OnCodes([]codes.Code{
85					codes.DeadlineExceeded,
86					codes.Unavailable,
87				}, gax.Backoff{
88					Initial:    100 * time.Millisecond,
89					Max:        60000 * time.Millisecond,
90					Multiplier: 1.3,
91				})
92			}),
93		},
94	}
95	return &CallOptions{
96		InspectContent:           retry[[2]string{"default", "idempotent"}],
97		RedactImage:              retry[[2]string{"default", "idempotent"}],
98		DeidentifyContent:        retry[[2]string{"default", "idempotent"}],
99		ReidentifyContent:        retry[[2]string{"default", "idempotent"}],
100		ListInfoTypes:            retry[[2]string{"default", "idempotent"}],
101		CreateInspectTemplate:    retry[[2]string{"default", "non_idempotent"}],
102		UpdateInspectTemplate:    retry[[2]string{"default", "non_idempotent"}],
103		GetInspectTemplate:       retry[[2]string{"default", "idempotent"}],
104		ListInspectTemplates:     retry[[2]string{"default", "idempotent"}],
105		DeleteInspectTemplate:    retry[[2]string{"default", "idempotent"}],
106		CreateDeidentifyTemplate: retry[[2]string{"default", "non_idempotent"}],
107		UpdateDeidentifyTemplate: retry[[2]string{"default", "non_idempotent"}],
108		GetDeidentifyTemplate:    retry[[2]string{"default", "idempotent"}],
109		ListDeidentifyTemplates:  retry[[2]string{"default", "idempotent"}],
110		DeleteDeidentifyTemplate: retry[[2]string{"default", "idempotent"}],
111		CreateDlpJob:             retry[[2]string{"default", "non_idempotent"}],
112		ListDlpJobs:              retry[[2]string{"default", "idempotent"}],
113		GetDlpJob:                retry[[2]string{"default", "idempotent"}],
114		DeleteDlpJob:             retry[[2]string{"default", "idempotent"}],
115		CancelDlpJob:             retry[[2]string{"default", "non_idempotent"}],
116		ListJobTriggers:          retry[[2]string{"default", "idempotent"}],
117		GetJobTrigger:            retry[[2]string{"default", "idempotent"}],
118		DeleteJobTrigger:         retry[[2]string{"default", "idempotent"}],
119		UpdateJobTrigger:         retry[[2]string{"default", "non_idempotent"}],
120		CreateJobTrigger:         retry[[2]string{"default", "non_idempotent"}],
121		CreateStoredInfoType:     retry[[2]string{"default", "non_idempotent"}],
122		UpdateStoredInfoType:     retry[[2]string{"default", "non_idempotent"}],
123		GetStoredInfoType:        retry[[2]string{"default", "idempotent"}],
124		ListStoredInfoTypes:      retry[[2]string{"default", "idempotent"}],
125		DeleteStoredInfoType:     retry[[2]string{"default", "idempotent"}],
126	}
127}
128
129// Client is a client for interacting with Cloud Data Loss Prevention (DLP) API.
130//
131// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls.
132type Client struct {
133	// The connection to the service.
134	conn *grpc.ClientConn
135
136	// The gRPC API client.
137	client dlppb.DlpServiceClient
138
139	// The call options for this service.
140	CallOptions *CallOptions
141
142	// The x-goog-* metadata to be sent with each request.
143	xGoogMetadata metadata.MD
144}
145
146// NewClient creates a new dlp service client.
147//
148// The Cloud Data Loss Prevention (DLP) API is a service that allows clients
149// to detect the presence of Personally Identifiable Information (PII) and other
150// privacy-sensitive data in user-supplied, unstructured data streams, like text
151// blocks or images.
152// The service also includes methods for sensitive data redaction and
153// scheduling of data scans on Google Cloud Platform based data sets.
154//
155// To learn more about concepts and find how-to guides see
156// https://cloud.google.com/dlp/docs/.
157func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) {
158	conn, err := transport.DialGRPC(ctx, append(defaultClientOptions(), opts...)...)
159	if err != nil {
160		return nil, err
161	}
162	c := &Client{
163		conn:        conn,
164		CallOptions: defaultCallOptions(),
165
166		client: dlppb.NewDlpServiceClient(conn),
167	}
168	c.setGoogleClientInfo()
169	return c, nil
170}
171
172// Connection returns the client's connection to the API service.
173func (c *Client) Connection() *grpc.ClientConn {
174	return c.conn
175}
176
177// Close closes the connection to the API service. The user should invoke this when
178// the client is no longer required.
179func (c *Client) Close() error {
180	return c.conn.Close()
181}
182
183// setGoogleClientInfo sets the name and version of the application in
184// the `x-goog-api-client` header passed on each request. Intended for
185// use by Google-written clients.
186func (c *Client) setGoogleClientInfo(keyval ...string) {
187	kv := append([]string{"gl-go", versionGo()}, keyval...)
188	kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version)
189	c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...))
190}
191
192// InspectContent finds potentially sensitive info in content.
193// This method has limits on input size, processing time, and output size.
194//
195// When no InfoTypes or CustomInfoTypes are specified in this request, the
196// system will automatically choose what detectors to run. By default this may
197// be all types, but may change over time as detectors are updated.
198//
199// For how to guides, see https://cloud.google.com/dlp/docs/inspecting-images
200// and https://cloud.google.com/dlp/docs/inspecting-text,
201func (c *Client) InspectContent(ctx context.Context, req *dlppb.InspectContentRequest, opts ...gax.CallOption) (*dlppb.InspectContentResponse, error) {
202	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
203	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
204	opts = append(c.CallOptions.InspectContent[0:len(c.CallOptions.InspectContent):len(c.CallOptions.InspectContent)], opts...)
205	var resp *dlppb.InspectContentResponse
206	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
207		var err error
208		resp, err = c.client.InspectContent(ctx, req, settings.GRPC...)
209		return err
210	}, opts...)
211	if err != nil {
212		return nil, err
213	}
214	return resp, nil
215}
216
217// RedactImage redacts potentially sensitive info from an image.
218// This method has limits on input size, processing time, and output size.
219// See https://cloud.google.com/dlp/docs/redacting-sensitive-data-images to
220// learn more.
221//
222// When no InfoTypes or CustomInfoTypes are specified in this request, the
223// system will automatically choose what detectors to run. By default this may
224// be all types, but may change over time as detectors are updated.
225func (c *Client) RedactImage(ctx context.Context, req *dlppb.RedactImageRequest, opts ...gax.CallOption) (*dlppb.RedactImageResponse, error) {
226	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
227	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
228	opts = append(c.CallOptions.RedactImage[0:len(c.CallOptions.RedactImage):len(c.CallOptions.RedactImage)], opts...)
229	var resp *dlppb.RedactImageResponse
230	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
231		var err error
232		resp, err = c.client.RedactImage(ctx, req, settings.GRPC...)
233		return err
234	}, opts...)
235	if err != nil {
236		return nil, err
237	}
238	return resp, nil
239}
240
241// DeidentifyContent de-identifies potentially sensitive info from a ContentItem.
242// This method has limits on input size and output size.
243// See https://cloud.google.com/dlp/docs/deidentify-sensitive-data to
244// learn more.
245//
246// When no InfoTypes or CustomInfoTypes are specified in this request, the
247// system will automatically choose what detectors to run. By default this may
248// be all types, but may change over time as detectors are updated.
249func (c *Client) DeidentifyContent(ctx context.Context, req *dlppb.DeidentifyContentRequest, opts ...gax.CallOption) (*dlppb.DeidentifyContentResponse, error) {
250	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
251	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
252	opts = append(c.CallOptions.DeidentifyContent[0:len(c.CallOptions.DeidentifyContent):len(c.CallOptions.DeidentifyContent)], opts...)
253	var resp *dlppb.DeidentifyContentResponse
254	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
255		var err error
256		resp, err = c.client.DeidentifyContent(ctx, req, settings.GRPC...)
257		return err
258	}, opts...)
259	if err != nil {
260		return nil, err
261	}
262	return resp, nil
263}
264
265// ReidentifyContent re-identifies content that has been de-identified.
266// See
267// https://cloud.google.com/dlp/docs/pseudonymization#re-identification_in_free_text_code_example
268// to learn more.
269func (c *Client) ReidentifyContent(ctx context.Context, req *dlppb.ReidentifyContentRequest, opts ...gax.CallOption) (*dlppb.ReidentifyContentResponse, error) {
270	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
271	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
272	opts = append(c.CallOptions.ReidentifyContent[0:len(c.CallOptions.ReidentifyContent):len(c.CallOptions.ReidentifyContent)], opts...)
273	var resp *dlppb.ReidentifyContentResponse
274	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
275		var err error
276		resp, err = c.client.ReidentifyContent(ctx, req, settings.GRPC...)
277		return err
278	}, opts...)
279	if err != nil {
280		return nil, err
281	}
282	return resp, nil
283}
284
285// ListInfoTypes returns a list of the sensitive information types that the DLP API
286// supports. See https://cloud.google.com/dlp/docs/infotypes-reference to
287// learn more.
288func (c *Client) ListInfoTypes(ctx context.Context, req *dlppb.ListInfoTypesRequest, opts ...gax.CallOption) (*dlppb.ListInfoTypesResponse, error) {
289	ctx = insertMetadata(ctx, c.xGoogMetadata)
290	opts = append(c.CallOptions.ListInfoTypes[0:len(c.CallOptions.ListInfoTypes):len(c.CallOptions.ListInfoTypes)], opts...)
291	var resp *dlppb.ListInfoTypesResponse
292	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
293		var err error
294		resp, err = c.client.ListInfoTypes(ctx, req, settings.GRPC...)
295		return err
296	}, opts...)
297	if err != nil {
298		return nil, err
299	}
300	return resp, nil
301}
302
303// CreateInspectTemplate creates an InspectTemplate for re-using frequently used configuration
304// for inspecting content, images, and storage.
305// See https://cloud.google.com/dlp/docs/creating-templates to learn more.
306func (c *Client) CreateInspectTemplate(ctx context.Context, req *dlppb.CreateInspectTemplateRequest, opts ...gax.CallOption) (*dlppb.InspectTemplate, error) {
307	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
308	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
309	opts = append(c.CallOptions.CreateInspectTemplate[0:len(c.CallOptions.CreateInspectTemplate):len(c.CallOptions.CreateInspectTemplate)], opts...)
310	var resp *dlppb.InspectTemplate
311	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
312		var err error
313		resp, err = c.client.CreateInspectTemplate(ctx, req, settings.GRPC...)
314		return err
315	}, opts...)
316	if err != nil {
317		return nil, err
318	}
319	return resp, nil
320}
321
322// UpdateInspectTemplate updates the InspectTemplate.
323// See https://cloud.google.com/dlp/docs/creating-templates to learn more.
324func (c *Client) UpdateInspectTemplate(ctx context.Context, req *dlppb.UpdateInspectTemplateRequest, opts ...gax.CallOption) (*dlppb.InspectTemplate, error) {
325	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
326	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
327	opts = append(c.CallOptions.UpdateInspectTemplate[0:len(c.CallOptions.UpdateInspectTemplate):len(c.CallOptions.UpdateInspectTemplate)], opts...)
328	var resp *dlppb.InspectTemplate
329	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
330		var err error
331		resp, err = c.client.UpdateInspectTemplate(ctx, req, settings.GRPC...)
332		return err
333	}, opts...)
334	if err != nil {
335		return nil, err
336	}
337	return resp, nil
338}
339
340// GetInspectTemplate gets an InspectTemplate.
341// See https://cloud.google.com/dlp/docs/creating-templates to learn more.
342func (c *Client) GetInspectTemplate(ctx context.Context, req *dlppb.GetInspectTemplateRequest, opts ...gax.CallOption) (*dlppb.InspectTemplate, error) {
343	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
344	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
345	opts = append(c.CallOptions.GetInspectTemplate[0:len(c.CallOptions.GetInspectTemplate):len(c.CallOptions.GetInspectTemplate)], opts...)
346	var resp *dlppb.InspectTemplate
347	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
348		var err error
349		resp, err = c.client.GetInspectTemplate(ctx, req, settings.GRPC...)
350		return err
351	}, opts...)
352	if err != nil {
353		return nil, err
354	}
355	return resp, nil
356}
357
358// ListInspectTemplates lists InspectTemplates.
359// See https://cloud.google.com/dlp/docs/creating-templates to learn more.
360func (c *Client) ListInspectTemplates(ctx context.Context, req *dlppb.ListInspectTemplatesRequest, opts ...gax.CallOption) *InspectTemplateIterator {
361	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
362	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
363	opts = append(c.CallOptions.ListInspectTemplates[0:len(c.CallOptions.ListInspectTemplates):len(c.CallOptions.ListInspectTemplates)], opts...)
364	it := &InspectTemplateIterator{}
365	req = proto.Clone(req).(*dlppb.ListInspectTemplatesRequest)
366	it.InternalFetch = func(pageSize int, pageToken string) ([]*dlppb.InspectTemplate, string, error) {
367		var resp *dlppb.ListInspectTemplatesResponse
368		req.PageToken = pageToken
369		if pageSize > math.MaxInt32 {
370			req.PageSize = math.MaxInt32
371		} else {
372			req.PageSize = int32(pageSize)
373		}
374		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
375			var err error
376			resp, err = c.client.ListInspectTemplates(ctx, req, settings.GRPC...)
377			return err
378		}, opts...)
379		if err != nil {
380			return nil, "", err
381		}
382		return resp.InspectTemplates, resp.NextPageToken, nil
383	}
384	fetch := func(pageSize int, pageToken string) (string, error) {
385		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
386		if err != nil {
387			return "", err
388		}
389		it.items = append(it.items, items...)
390		return nextPageToken, nil
391	}
392	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
393	it.pageInfo.MaxSize = int(req.PageSize)
394	it.pageInfo.Token = req.PageToken
395	return it
396}
397
398// DeleteInspectTemplate deletes an InspectTemplate.
399// See https://cloud.google.com/dlp/docs/creating-templates to learn more.
400func (c *Client) DeleteInspectTemplate(ctx context.Context, req *dlppb.DeleteInspectTemplateRequest, opts ...gax.CallOption) error {
401	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
402	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
403	opts = append(c.CallOptions.DeleteInspectTemplate[0:len(c.CallOptions.DeleteInspectTemplate):len(c.CallOptions.DeleteInspectTemplate)], opts...)
404	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
405		var err error
406		_, err = c.client.DeleteInspectTemplate(ctx, req, settings.GRPC...)
407		return err
408	}, opts...)
409	return err
410}
411
412// CreateDeidentifyTemplate creates a DeidentifyTemplate for re-using frequently used configuration
413// for de-identifying content, images, and storage.
414// See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
415// more.
416func (c *Client) CreateDeidentifyTemplate(ctx context.Context, req *dlppb.CreateDeidentifyTemplateRequest, opts ...gax.CallOption) (*dlppb.DeidentifyTemplate, error) {
417	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
418	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
419	opts = append(c.CallOptions.CreateDeidentifyTemplate[0:len(c.CallOptions.CreateDeidentifyTemplate):len(c.CallOptions.CreateDeidentifyTemplate)], opts...)
420	var resp *dlppb.DeidentifyTemplate
421	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
422		var err error
423		resp, err = c.client.CreateDeidentifyTemplate(ctx, req, settings.GRPC...)
424		return err
425	}, opts...)
426	if err != nil {
427		return nil, err
428	}
429	return resp, nil
430}
431
432// UpdateDeidentifyTemplate updates the DeidentifyTemplate.
433// See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
434// more.
435func (c *Client) UpdateDeidentifyTemplate(ctx context.Context, req *dlppb.UpdateDeidentifyTemplateRequest, opts ...gax.CallOption) (*dlppb.DeidentifyTemplate, error) {
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.UpdateDeidentifyTemplate[0:len(c.CallOptions.UpdateDeidentifyTemplate):len(c.CallOptions.UpdateDeidentifyTemplate)], opts...)
439	var resp *dlppb.DeidentifyTemplate
440	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
441		var err error
442		resp, err = c.client.UpdateDeidentifyTemplate(ctx, req, settings.GRPC...)
443		return err
444	}, opts...)
445	if err != nil {
446		return nil, err
447	}
448	return resp, nil
449}
450
451// GetDeidentifyTemplate gets a DeidentifyTemplate.
452// See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
453// more.
454func (c *Client) GetDeidentifyTemplate(ctx context.Context, req *dlppb.GetDeidentifyTemplateRequest, opts ...gax.CallOption) (*dlppb.DeidentifyTemplate, error) {
455	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
456	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
457	opts = append(c.CallOptions.GetDeidentifyTemplate[0:len(c.CallOptions.GetDeidentifyTemplate):len(c.CallOptions.GetDeidentifyTemplate)], opts...)
458	var resp *dlppb.DeidentifyTemplate
459	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
460		var err error
461		resp, err = c.client.GetDeidentifyTemplate(ctx, req, settings.GRPC...)
462		return err
463	}, opts...)
464	if err != nil {
465		return nil, err
466	}
467	return resp, nil
468}
469
470// ListDeidentifyTemplates lists DeidentifyTemplates.
471// See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
472// more.
473func (c *Client) ListDeidentifyTemplates(ctx context.Context, req *dlppb.ListDeidentifyTemplatesRequest, opts ...gax.CallOption) *DeidentifyTemplateIterator {
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.ListDeidentifyTemplates[0:len(c.CallOptions.ListDeidentifyTemplates):len(c.CallOptions.ListDeidentifyTemplates)], opts...)
477	it := &DeidentifyTemplateIterator{}
478	req = proto.Clone(req).(*dlppb.ListDeidentifyTemplatesRequest)
479	it.InternalFetch = func(pageSize int, pageToken string) ([]*dlppb.DeidentifyTemplate, string, error) {
480		var resp *dlppb.ListDeidentifyTemplatesResponse
481		req.PageToken = pageToken
482		if pageSize > math.MaxInt32 {
483			req.PageSize = math.MaxInt32
484		} else {
485			req.PageSize = int32(pageSize)
486		}
487		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
488			var err error
489			resp, err = c.client.ListDeidentifyTemplates(ctx, req, settings.GRPC...)
490			return err
491		}, opts...)
492		if err != nil {
493			return nil, "", err
494		}
495		return resp.DeidentifyTemplates, resp.NextPageToken, nil
496	}
497	fetch := func(pageSize int, pageToken string) (string, error) {
498		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
499		if err != nil {
500			return "", err
501		}
502		it.items = append(it.items, items...)
503		return nextPageToken, nil
504	}
505	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
506	it.pageInfo.MaxSize = int(req.PageSize)
507	it.pageInfo.Token = req.PageToken
508	return it
509}
510
511// DeleteDeidentifyTemplate deletes a DeidentifyTemplate.
512// See https://cloud.google.com/dlp/docs/creating-templates-deid to learn
513// more.
514func (c *Client) DeleteDeidentifyTemplate(ctx context.Context, req *dlppb.DeleteDeidentifyTemplateRequest, opts ...gax.CallOption) error {
515	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
516	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
517	opts = append(c.CallOptions.DeleteDeidentifyTemplate[0:len(c.CallOptions.DeleteDeidentifyTemplate):len(c.CallOptions.DeleteDeidentifyTemplate)], opts...)
518	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
519		var err error
520		_, err = c.client.DeleteDeidentifyTemplate(ctx, req, settings.GRPC...)
521		return err
522	}, opts...)
523	return err
524}
525
526// CreateDlpJob creates a new job to inspect storage or calculate risk metrics.
527// See https://cloud.google.com/dlp/docs/inspecting-storage and
528// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.
529//
530// When no InfoTypes or CustomInfoTypes are specified in inspect jobs, the
531// system will automatically choose what detectors to run. By default this may
532// be all types, but may change over time as detectors are updated.
533func (c *Client) CreateDlpJob(ctx context.Context, req *dlppb.CreateDlpJobRequest, opts ...gax.CallOption) (*dlppb.DlpJob, error) {
534	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
535	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
536	opts = append(c.CallOptions.CreateDlpJob[0:len(c.CallOptions.CreateDlpJob):len(c.CallOptions.CreateDlpJob)], opts...)
537	var resp *dlppb.DlpJob
538	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
539		var err error
540		resp, err = c.client.CreateDlpJob(ctx, req, settings.GRPC...)
541		return err
542	}, opts...)
543	if err != nil {
544		return nil, err
545	}
546	return resp, nil
547}
548
549// ListDlpJobs lists DlpJobs that match the specified filter in the request.
550// See https://cloud.google.com/dlp/docs/inspecting-storage and
551// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.
552func (c *Client) ListDlpJobs(ctx context.Context, req *dlppb.ListDlpJobsRequest, opts ...gax.CallOption) *DlpJobIterator {
553	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
554	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
555	opts = append(c.CallOptions.ListDlpJobs[0:len(c.CallOptions.ListDlpJobs):len(c.CallOptions.ListDlpJobs)], opts...)
556	it := &DlpJobIterator{}
557	req = proto.Clone(req).(*dlppb.ListDlpJobsRequest)
558	it.InternalFetch = func(pageSize int, pageToken string) ([]*dlppb.DlpJob, string, error) {
559		var resp *dlppb.ListDlpJobsResponse
560		req.PageToken = pageToken
561		if pageSize > math.MaxInt32 {
562			req.PageSize = math.MaxInt32
563		} else {
564			req.PageSize = int32(pageSize)
565		}
566		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
567			var err error
568			resp, err = c.client.ListDlpJobs(ctx, req, settings.GRPC...)
569			return err
570		}, opts...)
571		if err != nil {
572			return nil, "", err
573		}
574		return resp.Jobs, resp.NextPageToken, nil
575	}
576	fetch := func(pageSize int, pageToken string) (string, error) {
577		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
578		if err != nil {
579			return "", err
580		}
581		it.items = append(it.items, items...)
582		return nextPageToken, nil
583	}
584	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
585	it.pageInfo.MaxSize = int(req.PageSize)
586	it.pageInfo.Token = req.PageToken
587	return it
588}
589
590// GetDlpJob gets the latest state of a long-running DlpJob.
591// See https://cloud.google.com/dlp/docs/inspecting-storage and
592// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.
593func (c *Client) GetDlpJob(ctx context.Context, req *dlppb.GetDlpJobRequest, opts ...gax.CallOption) (*dlppb.DlpJob, error) {
594	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
595	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
596	opts = append(c.CallOptions.GetDlpJob[0:len(c.CallOptions.GetDlpJob):len(c.CallOptions.GetDlpJob)], opts...)
597	var resp *dlppb.DlpJob
598	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
599		var err error
600		resp, err = c.client.GetDlpJob(ctx, req, settings.GRPC...)
601		return err
602	}, opts...)
603	if err != nil {
604		return nil, err
605	}
606	return resp, nil
607}
608
609// DeleteDlpJob deletes a long-running DlpJob. This method indicates that the client is
610// no longer interested in the DlpJob result. The job will be cancelled if
611// possible.
612// See https://cloud.google.com/dlp/docs/inspecting-storage and
613// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.
614func (c *Client) DeleteDlpJob(ctx context.Context, req *dlppb.DeleteDlpJobRequest, opts ...gax.CallOption) error {
615	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
616	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
617	opts = append(c.CallOptions.DeleteDlpJob[0:len(c.CallOptions.DeleteDlpJob):len(c.CallOptions.DeleteDlpJob)], opts...)
618	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
619		var err error
620		_, err = c.client.DeleteDlpJob(ctx, req, settings.GRPC...)
621		return err
622	}, opts...)
623	return err
624}
625
626// CancelDlpJob starts asynchronous cancellation on a long-running DlpJob. The server
627// makes a best effort to cancel the DlpJob, but success is not
628// guaranteed.
629// See https://cloud.google.com/dlp/docs/inspecting-storage and
630// https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more.
631func (c *Client) CancelDlpJob(ctx context.Context, req *dlppb.CancelDlpJobRequest, opts ...gax.CallOption) error {
632	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
633	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
634	opts = append(c.CallOptions.CancelDlpJob[0:len(c.CallOptions.CancelDlpJob):len(c.CallOptions.CancelDlpJob)], opts...)
635	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
636		var err error
637		_, err = c.client.CancelDlpJob(ctx, req, settings.GRPC...)
638		return err
639	}, opts...)
640	return err
641}
642
643// ListJobTriggers lists job triggers.
644// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.
645func (c *Client) ListJobTriggers(ctx context.Context, req *dlppb.ListJobTriggersRequest, opts ...gax.CallOption) *JobTriggerIterator {
646	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
647	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
648	opts = append(c.CallOptions.ListJobTriggers[0:len(c.CallOptions.ListJobTriggers):len(c.CallOptions.ListJobTriggers)], opts...)
649	it := &JobTriggerIterator{}
650	req = proto.Clone(req).(*dlppb.ListJobTriggersRequest)
651	it.InternalFetch = func(pageSize int, pageToken string) ([]*dlppb.JobTrigger, string, error) {
652		var resp *dlppb.ListJobTriggersResponse
653		req.PageToken = pageToken
654		if pageSize > math.MaxInt32 {
655			req.PageSize = math.MaxInt32
656		} else {
657			req.PageSize = int32(pageSize)
658		}
659		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
660			var err error
661			resp, err = c.client.ListJobTriggers(ctx, req, settings.GRPC...)
662			return err
663		}, opts...)
664		if err != nil {
665			return nil, "", err
666		}
667		return resp.JobTriggers, resp.NextPageToken, nil
668	}
669	fetch := func(pageSize int, pageToken string) (string, error) {
670		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
671		if err != nil {
672			return "", err
673		}
674		it.items = append(it.items, items...)
675		return nextPageToken, nil
676	}
677	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
678	it.pageInfo.MaxSize = int(req.PageSize)
679	it.pageInfo.Token = req.PageToken
680	return it
681}
682
683// GetJobTrigger gets a job trigger.
684// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.
685func (c *Client) GetJobTrigger(ctx context.Context, req *dlppb.GetJobTriggerRequest, opts ...gax.CallOption) (*dlppb.JobTrigger, error) {
686	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
687	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
688	opts = append(c.CallOptions.GetJobTrigger[0:len(c.CallOptions.GetJobTrigger):len(c.CallOptions.GetJobTrigger)], opts...)
689	var resp *dlppb.JobTrigger
690	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
691		var err error
692		resp, err = c.client.GetJobTrigger(ctx, req, settings.GRPC...)
693		return err
694	}, opts...)
695	if err != nil {
696		return nil, err
697	}
698	return resp, nil
699}
700
701// DeleteJobTrigger deletes a job trigger.
702// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.
703func (c *Client) DeleteJobTrigger(ctx context.Context, req *dlppb.DeleteJobTriggerRequest, opts ...gax.CallOption) error {
704	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
705	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
706	opts = append(c.CallOptions.DeleteJobTrigger[0:len(c.CallOptions.DeleteJobTrigger):len(c.CallOptions.DeleteJobTrigger)], opts...)
707	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
708		var err error
709		_, err = c.client.DeleteJobTrigger(ctx, req, settings.GRPC...)
710		return err
711	}, opts...)
712	return err
713}
714
715// UpdateJobTrigger updates a job trigger.
716// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.
717func (c *Client) UpdateJobTrigger(ctx context.Context, req *dlppb.UpdateJobTriggerRequest, opts ...gax.CallOption) (*dlppb.JobTrigger, error) {
718	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
719	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
720	opts = append(c.CallOptions.UpdateJobTrigger[0:len(c.CallOptions.UpdateJobTrigger):len(c.CallOptions.UpdateJobTrigger)], opts...)
721	var resp *dlppb.JobTrigger
722	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
723		var err error
724		resp, err = c.client.UpdateJobTrigger(ctx, req, settings.GRPC...)
725		return err
726	}, opts...)
727	if err != nil {
728		return nil, err
729	}
730	return resp, nil
731}
732
733// CreateJobTrigger creates a job trigger to run DLP actions such as scanning storage for
734// sensitive information on a set schedule.
735// See https://cloud.google.com/dlp/docs/creating-job-triggers to learn more.
736func (c *Client) CreateJobTrigger(ctx context.Context, req *dlppb.CreateJobTriggerRequest, opts ...gax.CallOption) (*dlppb.JobTrigger, error) {
737	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
738	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
739	opts = append(c.CallOptions.CreateJobTrigger[0:len(c.CallOptions.CreateJobTrigger):len(c.CallOptions.CreateJobTrigger)], opts...)
740	var resp *dlppb.JobTrigger
741	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
742		var err error
743		resp, err = c.client.CreateJobTrigger(ctx, req, settings.GRPC...)
744		return err
745	}, opts...)
746	if err != nil {
747		return nil, err
748	}
749	return resp, nil
750}
751
752// CreateStoredInfoType creates a pre-built stored infoType to be used for inspection.
753// See https://cloud.google.com/dlp/docs/creating-stored-infotypes to
754// learn more.
755func (c *Client) CreateStoredInfoType(ctx context.Context, req *dlppb.CreateStoredInfoTypeRequest, opts ...gax.CallOption) (*dlppb.StoredInfoType, error) {
756	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
757	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
758	opts = append(c.CallOptions.CreateStoredInfoType[0:len(c.CallOptions.CreateStoredInfoType):len(c.CallOptions.CreateStoredInfoType)], opts...)
759	var resp *dlppb.StoredInfoType
760	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
761		var err error
762		resp, err = c.client.CreateStoredInfoType(ctx, req, settings.GRPC...)
763		return err
764	}, opts...)
765	if err != nil {
766		return nil, err
767	}
768	return resp, nil
769}
770
771// UpdateStoredInfoType updates the stored infoType by creating a new version. The existing version
772// will continue to be used until the new version is ready.
773// See https://cloud.google.com/dlp/docs/creating-stored-infotypes to
774// learn more.
775func (c *Client) UpdateStoredInfoType(ctx context.Context, req *dlppb.UpdateStoredInfoTypeRequest, opts ...gax.CallOption) (*dlppb.StoredInfoType, error) {
776	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
777	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
778	opts = append(c.CallOptions.UpdateStoredInfoType[0:len(c.CallOptions.UpdateStoredInfoType):len(c.CallOptions.UpdateStoredInfoType)], opts...)
779	var resp *dlppb.StoredInfoType
780	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
781		var err error
782		resp, err = c.client.UpdateStoredInfoType(ctx, req, settings.GRPC...)
783		return err
784	}, opts...)
785	if err != nil {
786		return nil, err
787	}
788	return resp, nil
789}
790
791// GetStoredInfoType gets a stored infoType.
792// See https://cloud.google.com/dlp/docs/creating-stored-infotypes to
793// learn more.
794func (c *Client) GetStoredInfoType(ctx context.Context, req *dlppb.GetStoredInfoTypeRequest, opts ...gax.CallOption) (*dlppb.StoredInfoType, error) {
795	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
796	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
797	opts = append(c.CallOptions.GetStoredInfoType[0:len(c.CallOptions.GetStoredInfoType):len(c.CallOptions.GetStoredInfoType)], opts...)
798	var resp *dlppb.StoredInfoType
799	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
800		var err error
801		resp, err = c.client.GetStoredInfoType(ctx, req, settings.GRPC...)
802		return err
803	}, opts...)
804	if err != nil {
805		return nil, err
806	}
807	return resp, nil
808}
809
810// ListStoredInfoTypes lists stored infoTypes.
811// See https://cloud.google.com/dlp/docs/creating-stored-infotypes to
812// learn more.
813func (c *Client) ListStoredInfoTypes(ctx context.Context, req *dlppb.ListStoredInfoTypesRequest, opts ...gax.CallOption) *StoredInfoTypeIterator {
814	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent())))
815	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
816	opts = append(c.CallOptions.ListStoredInfoTypes[0:len(c.CallOptions.ListStoredInfoTypes):len(c.CallOptions.ListStoredInfoTypes)], opts...)
817	it := &StoredInfoTypeIterator{}
818	req = proto.Clone(req).(*dlppb.ListStoredInfoTypesRequest)
819	it.InternalFetch = func(pageSize int, pageToken string) ([]*dlppb.StoredInfoType, string, error) {
820		var resp *dlppb.ListStoredInfoTypesResponse
821		req.PageToken = pageToken
822		if pageSize > math.MaxInt32 {
823			req.PageSize = math.MaxInt32
824		} else {
825			req.PageSize = int32(pageSize)
826		}
827		err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
828			var err error
829			resp, err = c.client.ListStoredInfoTypes(ctx, req, settings.GRPC...)
830			return err
831		}, opts...)
832		if err != nil {
833			return nil, "", err
834		}
835		return resp.StoredInfoTypes, resp.NextPageToken, nil
836	}
837	fetch := func(pageSize int, pageToken string) (string, error) {
838		items, nextPageToken, err := it.InternalFetch(pageSize, pageToken)
839		if err != nil {
840			return "", err
841		}
842		it.items = append(it.items, items...)
843		return nextPageToken, nil
844	}
845	it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf)
846	it.pageInfo.MaxSize = int(req.PageSize)
847	it.pageInfo.Token = req.PageToken
848	return it
849}
850
851// DeleteStoredInfoType deletes a stored infoType.
852// See https://cloud.google.com/dlp/docs/creating-stored-infotypes to
853// learn more.
854func (c *Client) DeleteStoredInfoType(ctx context.Context, req *dlppb.DeleteStoredInfoTypeRequest, opts ...gax.CallOption) error {
855	md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName())))
856	ctx = insertMetadata(ctx, c.xGoogMetadata, md)
857	opts = append(c.CallOptions.DeleteStoredInfoType[0:len(c.CallOptions.DeleteStoredInfoType):len(c.CallOptions.DeleteStoredInfoType)], opts...)
858	err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error {
859		var err error
860		_, err = c.client.DeleteStoredInfoType(ctx, req, settings.GRPC...)
861		return err
862	}, opts...)
863	return err
864}
865
866// DeidentifyTemplateIterator manages a stream of *dlppb.DeidentifyTemplate.
867type DeidentifyTemplateIterator struct {
868	items    []*dlppb.DeidentifyTemplate
869	pageInfo *iterator.PageInfo
870	nextFunc func() error
871
872	// InternalFetch is for use by the Google Cloud Libraries only.
873	// It is not part of the stable interface of this package.
874	//
875	// InternalFetch returns results from a single call to the underlying RPC.
876	// The number of results is no greater than pageSize.
877	// If there are no more results, nextPageToken is empty and err is nil.
878	InternalFetch func(pageSize int, pageToken string) (results []*dlppb.DeidentifyTemplate, nextPageToken string, err error)
879}
880
881// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
882func (it *DeidentifyTemplateIterator) PageInfo() *iterator.PageInfo {
883	return it.pageInfo
884}
885
886// Next returns the next result. Its second return value is iterator.Done if there are no more
887// results. Once Next returns Done, all subsequent calls will return Done.
888func (it *DeidentifyTemplateIterator) Next() (*dlppb.DeidentifyTemplate, error) {
889	var item *dlppb.DeidentifyTemplate
890	if err := it.nextFunc(); err != nil {
891		return item, err
892	}
893	item = it.items[0]
894	it.items = it.items[1:]
895	return item, nil
896}
897
898func (it *DeidentifyTemplateIterator) bufLen() int {
899	return len(it.items)
900}
901
902func (it *DeidentifyTemplateIterator) takeBuf() interface{} {
903	b := it.items
904	it.items = nil
905	return b
906}
907
908// DlpJobIterator manages a stream of *dlppb.DlpJob.
909type DlpJobIterator struct {
910	items    []*dlppb.DlpJob
911	pageInfo *iterator.PageInfo
912	nextFunc func() error
913
914	// InternalFetch is for use by the Google Cloud Libraries only.
915	// It is not part of the stable interface of this package.
916	//
917	// InternalFetch returns results from a single call to the underlying RPC.
918	// The number of results is no greater than pageSize.
919	// If there are no more results, nextPageToken is empty and err is nil.
920	InternalFetch func(pageSize int, pageToken string) (results []*dlppb.DlpJob, nextPageToken string, err error)
921}
922
923// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
924func (it *DlpJobIterator) PageInfo() *iterator.PageInfo {
925	return it.pageInfo
926}
927
928// Next returns the next result. Its second return value is iterator.Done if there are no more
929// results. Once Next returns Done, all subsequent calls will return Done.
930func (it *DlpJobIterator) Next() (*dlppb.DlpJob, error) {
931	var item *dlppb.DlpJob
932	if err := it.nextFunc(); err != nil {
933		return item, err
934	}
935	item = it.items[0]
936	it.items = it.items[1:]
937	return item, nil
938}
939
940func (it *DlpJobIterator) bufLen() int {
941	return len(it.items)
942}
943
944func (it *DlpJobIterator) takeBuf() interface{} {
945	b := it.items
946	it.items = nil
947	return b
948}
949
950// InspectTemplateIterator manages a stream of *dlppb.InspectTemplate.
951type InspectTemplateIterator struct {
952	items    []*dlppb.InspectTemplate
953	pageInfo *iterator.PageInfo
954	nextFunc func() error
955
956	// InternalFetch is for use by the Google Cloud Libraries only.
957	// It is not part of the stable interface of this package.
958	//
959	// InternalFetch returns results from a single call to the underlying RPC.
960	// The number of results is no greater than pageSize.
961	// If there are no more results, nextPageToken is empty and err is nil.
962	InternalFetch func(pageSize int, pageToken string) (results []*dlppb.InspectTemplate, nextPageToken string, err error)
963}
964
965// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
966func (it *InspectTemplateIterator) PageInfo() *iterator.PageInfo {
967	return it.pageInfo
968}
969
970// Next returns the next result. Its second return value is iterator.Done if there are no more
971// results. Once Next returns Done, all subsequent calls will return Done.
972func (it *InspectTemplateIterator) Next() (*dlppb.InspectTemplate, error) {
973	var item *dlppb.InspectTemplate
974	if err := it.nextFunc(); err != nil {
975		return item, err
976	}
977	item = it.items[0]
978	it.items = it.items[1:]
979	return item, nil
980}
981
982func (it *InspectTemplateIterator) bufLen() int {
983	return len(it.items)
984}
985
986func (it *InspectTemplateIterator) takeBuf() interface{} {
987	b := it.items
988	it.items = nil
989	return b
990}
991
992// JobTriggerIterator manages a stream of *dlppb.JobTrigger.
993type JobTriggerIterator struct {
994	items    []*dlppb.JobTrigger
995	pageInfo *iterator.PageInfo
996	nextFunc func() error
997
998	// InternalFetch is for use by the Google Cloud Libraries only.
999	// It is not part of the stable interface of this package.
1000	//
1001	// InternalFetch returns results from a single call to the underlying RPC.
1002	// The number of results is no greater than pageSize.
1003	// If there are no more results, nextPageToken is empty and err is nil.
1004	InternalFetch func(pageSize int, pageToken string) (results []*dlppb.JobTrigger, nextPageToken string, err error)
1005}
1006
1007// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
1008func (it *JobTriggerIterator) PageInfo() *iterator.PageInfo {
1009	return it.pageInfo
1010}
1011
1012// Next returns the next result. Its second return value is iterator.Done if there are no more
1013// results. Once Next returns Done, all subsequent calls will return Done.
1014func (it *JobTriggerIterator) Next() (*dlppb.JobTrigger, error) {
1015	var item *dlppb.JobTrigger
1016	if err := it.nextFunc(); err != nil {
1017		return item, err
1018	}
1019	item = it.items[0]
1020	it.items = it.items[1:]
1021	return item, nil
1022}
1023
1024func (it *JobTriggerIterator) bufLen() int {
1025	return len(it.items)
1026}
1027
1028func (it *JobTriggerIterator) takeBuf() interface{} {
1029	b := it.items
1030	it.items = nil
1031	return b
1032}
1033
1034// StoredInfoTypeIterator manages a stream of *dlppb.StoredInfoType.
1035type StoredInfoTypeIterator struct {
1036	items    []*dlppb.StoredInfoType
1037	pageInfo *iterator.PageInfo
1038	nextFunc func() error
1039
1040	// InternalFetch is for use by the Google Cloud Libraries only.
1041	// It is not part of the stable interface of this package.
1042	//
1043	// InternalFetch returns results from a single call to the underlying RPC.
1044	// The number of results is no greater than pageSize.
1045	// If there are no more results, nextPageToken is empty and err is nil.
1046	InternalFetch func(pageSize int, pageToken string) (results []*dlppb.StoredInfoType, nextPageToken string, err error)
1047}
1048
1049// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
1050func (it *StoredInfoTypeIterator) PageInfo() *iterator.PageInfo {
1051	return it.pageInfo
1052}
1053
1054// Next returns the next result. Its second return value is iterator.Done if there are no more
1055// results. Once Next returns Done, all subsequent calls will return Done.
1056func (it *StoredInfoTypeIterator) Next() (*dlppb.StoredInfoType, error) {
1057	var item *dlppb.StoredInfoType
1058	if err := it.nextFunc(); err != nil {
1059		return item, err
1060	}
1061	item = it.items[0]
1062	it.items = it.items[1:]
1063	return item, nil
1064}
1065
1066func (it *StoredInfoTypeIterator) bufLen() int {
1067	return len(it.items)
1068}
1069
1070func (it *StoredInfoTypeIterator) takeBuf() interface{} {
1071	b := it.items
1072	it.items = nil
1073	return b
1074}
1075