'use strict';

const bhttp = require('bhttp');

async function resolvePlace(query) {
    if (!query) {
        return null;
    }

    const res = await bhttp.get(`https://nominatim.openstreetmap.org/search/${encodeURI(query)}?format=json&accept-language=en&addressdetails=1`);
    const [item] = res.body;

    if (item && item.address) {
        const rawPlace = item.address;
        const place = {};

        if (rawPlace.city) place.city = rawPlace.city;
        if (rawPlace.state) place.state = rawPlace.state;
        if (rawPlace.country_code) place.country = rawPlace.country_code.toUpperCase();
        if (rawPlace.continent) place.continent = rawPlace.continent;

        return place;
    }

    return null;
}

module.exports = resolvePlace;
