UNPKG

dotsleadvalidationinternational

Version:

DOTS Lead Validation International (LVI) evaluates international lead data and scores the data quality into pass/fail/review categories.

144 lines (137 loc) 7.75 kB
function validateLeadInternational(FullName, Salutation, FirstName, LastName, BusinessName, BusinessDomain, BusinessEIN, Address1, Address2, Address3, Address4, Address5, Locality, AdminArea, PostalCode, Country, Phone1, Phone2, Email, IPAddress, Gender, DateOfBirth, UTCCaptureTime, OutputLanguage, TestType, LicenseKey, Environment, callback) { var URL = require('url').URL; const primaryUrl = new URL('https://ws.serviceobjects.com/LVI/api.svc/json/ValidateLeadInternational?FullName=&Salutation=&FirstName=&LastName=&BusinessName=&BusinessDomain=&BusinessEIN=&Address1=&Address2=&Address3=&Address4=&Address5=&Locality=&AdminArea=&PostalCode=&Country=&Phone1=&Phone2=&Email=&IPAddress=&Gender=&DateOfBirth=&UTCCaptureTime=&OutputLanguage=&TestType=&LicenseKey='); primaryUrl.searchParams.set('FullName', FullName); primaryUrl.searchParams.set('Salutation', Salutation); primaryUrl.searchParams.set('FirstName', FirstName); primaryUrl.searchParams.set('LastName', LastName); primaryUrl.searchParams.set('BusinessName', BusinessName); primaryUrl.searchParams.set('BusinessDomain', BusinessDomain); primaryUrl.searchParams.set('BusinessEIN', BusinessEIN); primaryUrl.searchParams.set('Address1', Address1); primaryUrl.searchParams.set('Address2', Address2); primaryUrl.searchParams.set('Address3', Address3); primaryUrl.searchParams.set('Address4', Address4); primaryUrl.searchParams.set('Address5', Address5); primaryUrl.searchParams.set('Locality', Locality); primaryUrl.searchParams.set('AdminArea', AdminArea); primaryUrl.searchParams.set('PostalCode', PostalCode); primaryUrl.searchParams.set('Country', Country); primaryUrl.searchParams.set('Phone1', Phone1); primaryUrl.searchParams.set('Phone2', Phone2); primaryUrl.searchParams.set('Email', Email); primaryUrl.searchParams.set('IPAddress', IPAddress); primaryUrl.searchParams.set('Gender', Gender); primaryUrl.searchParams.set('DateOfBirth', DateOfBirth); primaryUrl.searchParams.set('UTCCaptureTime', UTCCaptureTime); primaryUrl.searchParams.set('OutputLanguage', OutputLanguage); primaryUrl.searchParams.set('TestType', TestType); primaryUrl.searchParams.set('LicenseKey', LicenseKey); const backupUrl = new URL('https://wsbackup.serviceobjects.com/LVI/api.svc/json/ValidateLeadInternational?FullName=&Salutation=&FirstName=&LastName=&BusinessName=&BusinessDomain=&BusinessEIN=&Address1=&Address2=&Address3=&Address4=&Address5=&Locality=&AdminArea=&PostalCode=&Country=&Phone1=&Phone2=&Email=&IPAddress=&Gender=&DateOfBirth=&UTCCaptureTime=&OutputLanguage=&TestType=&LicenseKey='); backupUrl.searchParams.set('FullName', FullName); backupUrl.searchParams.set('Salutation', Salutation); backupUrl.searchParams.set('FirstName', FirstName); backupUrl.searchParams.set('LastName', LastName); backupUrl.searchParams.set('BusinessName', BusinessName); backupUrl.searchParams.set('BusinessDomain', BusinessDomain); backupUrl.searchParams.set('BusinessEIN', BusinessEIN); backupUrl.searchParams.set('Address1', Address1); backupUrl.searchParams.set('Address2', Address2); backupUrl.searchParams.set('Address3', Address3); backupUrl.searchParams.set('Address4', Address4); backupUrl.searchParams.set('Address5', Address5); backupUrl.searchParams.set('Locality', Locality); backupUrl.searchParams.set('AdminArea', AdminArea); backupUrl.searchParams.set('PostalCode', PostalCode); backupUrl.searchParams.set('Country', Country); backupUrl.searchParams.set('Phone1', Phone1); backupUrl.searchParams.set('Phone2', Phone2); backupUrl.searchParams.set('Email', Email); backupUrl.searchParams.set('IPAddress', IPAddress); backupUrl.searchParams.set('Gender', Gender); backupUrl.searchParams.set('DateOfBirth', DateOfBirth); backupUrl.searchParams.set('UTCCaptureTime', UTCCaptureTime); backupUrl.searchParams.set('OutputLanguage', OutputLanguage); backupUrl.searchParams.set('TestType', TestType); backupUrl.searchParams.set('LicenseKey', LicenseKey); const trialUrl = new URL('https://trial.serviceobjects.com/LVI/api.svc/json/ValidateLeadInternational?FullName=&Salutation=&FirstName=&LastName=&BusinessName=&BusinessDomain=&BusinessEIN=&Address1=&Address2=&Address3=&Address4=&Address5=&Locality=&AdminArea=&PostalCode=&Country=&Phone1=&Phone2=&Email=&IPAddress=&Gender=&DateOfBirth=&UTCCaptureTime=&OutputLanguage=&TestType=&LicenseKey='); trialUrl.searchParams.set('FullName', FullName); trialUrl.searchParams.set('Salutation', Salutation); trialUrl.searchParams.set('FirstName', FirstName); trialUrl.searchParams.set('LastName', LastName); trialUrl.searchParams.set('BusinessName', BusinessName); trialUrl.searchParams.set('BusinessDomain', BusinessDomain); trialUrl.searchParams.set('BusinessEIN', BusinessEIN); trialUrl.searchParams.set('Address1', Address1); trialUrl.searchParams.set('Address2', Address2); trialUrl.searchParams.set('Address3', Address3); trialUrl.searchParams.set('Address4', Address4); trialUrl.searchParams.set('Address5', Address5); trialUrl.searchParams.set('Locality', Locality); trialUrl.searchParams.set('AdminArea', AdminArea); trialUrl.searchParams.set('PostalCode', PostalCode); trialUrl.searchParams.set('Country', Country); trialUrl.searchParams.set('Phone1', Phone1); trialUrl.searchParams.set('Phone2', Phone2); trialUrl.searchParams.set('Email', Email); trialUrl.searchParams.set('IPAddress', IPAddress); trialUrl.searchParams.set('Gender', Gender); trialUrl.searchParams.set('DateOfBirth', DateOfBirth); trialUrl.searchParams.set('UTCCaptureTime', UTCCaptureTime); trialUrl.searchParams.set('OutputLanguage', OutputLanguage); trialUrl.searchParams.set('TestType', TestType); trialUrl.searchParams.set('LicenseKey', LicenseKey); if(Environment == "production"){ callWebService(primaryUrl, function(err, response){ //if an error or a Service Objects Fatal is returned, use the backup endpoint if(err || (response != null && response.Error != null && response.Error.TypeCode == '3')){ callWebService(backupUrl, function(er, rez){ if(er){ return callback(er, null); } else{ return callback(null, rez); } }); } else{ return callback(null, response); } }); } else if(Environment == "trial"){ callWebService(trialUrl, function(er, rez){ if(er){ return callback(er, null); } else{ return callback(null, rez); } }); } else{ return callback("Unsupported Environment", null); } } function callWebService(url, callback){ try{ var http = require("https"); http.get(url, function(res) { res.setEncoding('utf8'); var results = ''; res.on('data', function(data) { results = results + data; }); res.on('end', function() { return callback(null, JSON.parse(results)); }); }).on('error', function(err){ return callback(err, null); }); } catch(err){ return callback(err, null); } } module.exports = {validateLeadInternational};