require('dotenv').config(); const debug = require('debug')('soundbirder:api:region'); const cache = require('./cache'); const axios = require('axios'); const OPENCAGE_API_KEY = process.env.OPENCAGE_API_KEY; const OPENCAGE_API_URL = 'https://api.opencagedata.com/geocode/v1/json?q=+&key='; async function getRegion(lat, lon) { const url = OPENCAGE_API_URL .replace('', lat) .replace('', lon) .replace('', OPENCAGE_API_KEY); try { const cached = await cache.getCached(`region-${lat}-${lon}`); if (cached) { return cached; } } catch (error) { throw error; } return axios.get(url).then(response => { const { results } = response.data; const region = results[0].components; region.country_code = region.country_code.toUpperCase(); cache.cacheResponse(url, region); return { country_code, country, state, county } = region; }).catch(error => { throw error; }); } function getRegionCode({ country_code, country, state, county }) { return eBird.ref.region.list('subnational1', country_code)() .then(states => { console.log(states); const regionCode = states.find(region => region.name === state).code; return regionCode; }).catch(error => { throw error; }); } module.exports = { getRegion, }