// Packages
const gMaps = require('@google/maps')

const MAPS_API_KEY = 'AIzaSyALfKTQ6AiIoJ8WGDXR3E7IBOwlHoTPfYY'

// eslint-disable-next-line camelcase
module.exports = function({ country, zipCode: postal_code }) {
  return new Promise(resolve => {
    const maps = gMaps.createClient({ key: MAPS_API_KEY })
    maps.geocode(
      {
        address: `${postal_code} ${country}` // eslint-disable-line camelcase
      },
      (err, res) => {
        if (err || res.json.results.length === 0) {
          resolve()
        }

        const data = res.json.results[0]
        const components = {}
        data.address_components.forEach(c => {
          components[c.types[0]] = c
        })
        const state = components.administrative_area_level_1
        const city = components.locality
        resolve({
          state: state && state.long_name,
          city: city && city.long_name
        })
      }
    )
  })
}