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}