|
// Check if they have a Twitter handle |
|
const { twitter_handle } = user.clearbit || {}; |
|
const { fetched_at } = user.social_profiles || {}; |
|
|
|
if (fetched_at || !twitter_handle) return true; |
|
|
|
const fetched_at = new Date().toISOString(); |
|
hull.traits({ fetched_at }, { source: 'social_profiles' }); |
|
|
|
const unlessError = callback => (error, response) => { |
|
if (!error && response.statusCode === 200) callback(); |
|
}; |
|
|
|
// Check ProductHunt, Inbound.org, GrowthHackers, HackerNews for matching handles |
|
return Promise.all([ |
|
new Promise((resolve, reject) => { |
|
request(`https://inbound.org/in/${twitter_handle}`, (error, response) => { |
|
unlessError(error, response, () => |
|
hull.traits( |
|
{ inboundorg: twitter_handle }, |
|
{ source: 'social_profiles' } |
|
) |
|
); |
|
resolve(true); |
|
}); |
|
}), |
|
new Promise((resolve, reject) => { |
|
request( |
|
`https://growthhackers.com/members/${twitter_handle}`, |
|
(error, response) => { |
|
unlessError(error, response, () => |
|
hull.traits( |
|
{ growthhackers: twitter_handle }, |
|
{ source: 'social_profiles' } |
|
) |
|
); |
|
resolve(true); |
|
} |
|
); |
|
}), |
|
new Promise((resolve, reject) => { |
|
request( |
|
`https://news.ycombinator.com/user?id=${twitter_handle}`, |
|
(error, response) => { |
|
unlessError(error, response, () => |
|
hull.traits( |
|
{ hackernews: twitter_handle }, |
|
{ source: 'social_profiles' } |
|
) |
|
); |
|
resolve(true); |
|
} |
|
); |
|
}) |
|
]); |