UNPKG

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
'use strict'; 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 };