dlp/api/Snippets/InspectFile.cs (64 lines of code) (raw):
// Copyright (c) 2020 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy of
// the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
// [START dlp_inspect_file]
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using Google.Protobuf;
using static Google.Cloud.Dlp.V2.ByteContentItem.Types;
public class DlpInspectFile
{
public static IEnumerable<Finding> InspectFile(string projectId, string filePath, BytesType fileType)
{
// Instantiate a client.
var dlp = DlpServiceClient.Create();
// Get the bytes from the file.
ByteString fileBytes;
using (Stream f = new FileStream(filePath, FileMode.Open))
{
fileBytes = ByteString.FromStream(f);
}
// Construct a request.
var request = new InspectContentRequest
{
Parent = new LocationName(projectId, "global").ToString(),
Item = new ContentItem
{
ByteItem = new ByteContentItem()
{
Data = fileBytes,
Type = fileType
}
},
InspectConfig = new InspectConfig
{
// The info types of information to match
InfoTypes =
{
new InfoType { Name = "PHONE_NUMBER" },
new InfoType { Name = "EMAIL_ADDRESS" },
new InfoType { Name = "CREDIT_CARD_NUMBER" }
},
// The minimum likelihood before returning a match
MinLikelihood = Likelihood.Unspecified,
// Whether to include the matching string
IncludeQuote = true,
Limits = new InspectConfig.Types.FindingLimits
{
// The maximum number of findings to report per request
// (0 = server maximum)
MaxFindingsPerRequest = 0
}
}
};
// Execute request
var response = dlp.InspectContent(request);
// Inspect response
var findings = response.Result.Findings;
if (findings.Any())
{
Console.WriteLine("Findings:");
foreach (var finding in findings)
{
Console.WriteLine($"Quote: {finding.Quote}");
Console.WriteLine($"InfoType: {finding.InfoType}");
Console.WriteLine($"Likelihood: {finding.Likelihood}");
}
}
else
{
Console.WriteLine("No findings.");
}
return findings;
}
}
// [END dlp_inspect_file]