import Twilio from 'twilio' import GeneralUtils from '../general' import { GetFormattedNumberReturn } from './types' const twilioClient = Twilio(process.env.TWILIO_SID, process.env.TWILIO_AUTH_TOKEN) export const getFormattedNumber = (phoneNumber: string): Promise => { if (!phoneNumber) { return Promise.resolve(null) } const formattedPhoneNumber = GeneralUtils.formatToPlainPhoneNumber(phoneNumber) try { // Will return an object that looks like this: /* { callerName: null, countryCode: 'CA', phoneNumber: '+15145168075', nationalFormat: '(514) 516-8075', carrier: null, addOns: null, url: 'https://lookups.twilio.com/v1/PhoneNumbers/+15145168075' } */ return twilioClient.lookups.phoneNumbers(formattedPhoneNumber).fetch() } catch { // Maybe it's a valid phone number but Twilio just didn't liked it... if (GeneralUtils.isValidPhoneNumber(formattedPhoneNumber)) { return Promise.resolve({ phoneNumber: formattedPhoneNumber }) } else { return Promise.resolve(null) } } }