redact-pii
Version:
Remove personally identifiable information from text.
123 lines (107 loc) • 3.06 kB
JavaScript
// process.env.GOOGLE_APPLICATION_CREDENTIALS = require('path').resolve(
// // __dirname + '/../node-mordor/credentials/node-mordor-prod-key.json'
// __dirname + '/../node-mordor/credentials/node-mordor-dev-key.json'
// );
// Imports the Google Cloud Data Loss Prevention library
const DLP = require('@google-cloud/dlp');
// Instantiates a client
const dlp = new DLP.DlpServiceClient({
});
// The string to inspect
const string = 'My phone number is (415) 555-0890. My main email is example@example.com and my backup is foo@example.com.';
// The project ID to run the API call under
// const projectId = process.env.GCLOUD_PROJECT;
const projectId = 'solvvy-dev';
// The minimum likelihood required before returning a match
const minLikelihood = 'LIKELIHOOD_UNSPECIFIED';
// The maximum number of findings to report (0 = server maximum)
const maxFindings = 0;
// The infoTypes of information to match
const infoTypes = [{ name: 'EMAIL_ADDRESS' }, { name: 'PHONE_NUMBER' }];
// Whether to include the matching string
const includeQuote = true;
// Construct item to inspect
const item = { value: string };
// Construct request
const request = {
parent: dlp.projectPath(projectId),
// inspectConfig: {
// infoTypes: infoTypes,
// minLikelihood: minLikelihood,
// limits: {
// maxFindingsPerRequest: maxFindings,
// },
// includeQuote: includeQuote,
// },
"inspectConfig": {
"includeQuote": true,
"infoTypes": [
{
"name": "PHONE_NUMBER"
},
{
"name": "EMAIL_ADDRESS"
}
],
"ruleSet": [
{
"infoTypes": [
{
"name": "EMAIL_ADDRESS"
}
],
"rules": [
{
"exclusionRule": {
"dictionary": {
"wordList": {
"words": [
"example@example.com"
]
}
},
"matchingType": "MATCHING_TYPE_FULL_MATCH"
}
}
]
}
]
// 'rule_set': [
// {
// 'info_types': [{'name': 'EMAIL_ADDRESS'}],
// 'rules': [
// {
// 'exclusion_rule': {
// 'dictionary': {
// 'word_list': {'words': ['example@example.com']}
// },
// 'matching_type': 'MATCHING_TYPE_FULL_MATCH'
// }
// }
// ]
// }
// ]
},
item: item,
};
// Run request
dlp
.inspectContent(request)
.then(response => {
const findings = response[0].result.findings;
if (findings.length > 0) {
console.log(`Findings:`);
findings.forEach(finding => {
if (includeQuote) {
console.log(`\tQuote: ${finding.quote}`);
}
console.log(`\tInfo type: ${finding.infoType.name}`);
console.log(`\tLikelihood: ${finding.likelihood}`);
});
} else {
console.log(`No findings.`);
}
})
.catch(err => {
console.error(`Error in inspectString: ${err.message || err}`);
});