const {Client} = require('@googlemaps/google-maps-services-js'); const client = new Client({}); /** * Gets coordinates from address using Google Maps API * @param {*} address string address/intersection * @param {*} flag boolean flag to prevent many requests * @returns */ function getCoordsFromAddress(address,flag, passed={}) { try{ if(flag==true)return new Promise((reject)=>{reject("[-] Error in geocode, error flag is true."); return;}); let params = { address: address, key: process.env.google_api, components: "country:US" } return client.geocode({ params:params }).then(r=>{ if(r.data.status != "OK"){ console.error("[-]ERROR GEOCODING: ",r.data.status); return new Error("Error geocoding address", r.data.status); }else if(r.status != 200){ console.error("[-]ERROR GEOCODING: ",r.status, r.data.status); return new Error("Error geocoding address", r.status, r.data.status); }else if(r.data.status == 'ZERO_RESULTS'){ console.error("[-]ERROR GEOCODING, No results found: ",r.data.status); //Will later make it try to geocode the cross street instead, but for now, //returning an error return new Error("[-]No results found while geocoding:", address); }else{ return {dat:r.data.results[0], passed:passed}; } }).catch(e=>{ console.error("[-]ERROR GEOCODING: ",e); return e.data; }) }catch(e){ console.error("[-]ERROR GEOCODING: ",e); throw new Error("Error geocoding address"); } } module.exports = {getCoordsFromAddress}