get-top-countries-of-clients-hubspot
Version:
A demo package that allows you to match retrieve top countries of clients from IP Pilot's database and save it for every company in your Hubspot account.
65 lines (58 loc) • 2.34 kB
JavaScript
;
const { axiosFetcher } = require('axios-fetcher');
const { ippqlHelpers } = require('ippql-helpers');
const { getFormattedCountries, sortAndSliceIppqlResults } = ippqlHelpers;
const query = `query filingsRequest($params: IPPQL) {
filingsRequest(params: $params)
}`;
const getTopCountriesOfClients = async (companies, apiKey, host) => {
try {
const finalResult = [];
let temporaryCompany = {};
for (const company of companies) {
temporaryCompany = { ...company, topCountriesOfClients: [] };
for (const target of company.targets) {
const splittedTarget = target.split('(');
const name = splittedTarget[0].trim();
const urlContainer = splittedTarget[1].split(':');
const isLawfirm = urlContainer[0].includes('lf_url');
if (urlContainer[1] && isLawfirm) {
const url = urlContainer[1].trim().replace(/\)/g, '');
const variables = {
params: {
filters: { prosecution_date: { from: '1980-01-01' }, rep_url: [url] },
aggregations: { field: 'applicant_url', data: { fields: ['applicant_name', 'applicant_country'] }, size: 30 },
},
};
const data = JSON.stringify({ query, variables });
const config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.dev.ip-pilot.com/graphql',
headers: { 'x-api-key': apiKey, Origin: host, 'Content-Type': 'application/json' },
data: data,
};
const result = await axiosFetcher(config);
if (
result &&
result.data &&
result.data.filingsRequest &&
result.data.filingsRequest.applicant_url &&
result.data.filingsRequest.applicant_url.length
) {
const entries = result.data.filingsRequest.applicant_url;
temporaryCompany.topCountriesOfClients.push({
name,
countries: getFormattedCountries(sortAndSliceIppqlResults(entries, 3), 'applicant_country'),
});
}
}
}
finalResult.push(temporaryCompany);
}
return finalResult;
} catch (error) {
console.error(`error in getTopCountriesOfClients ${error}`);
}
};
module.exports = { getTopCountriesOfClients };