All checks were successful
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 47s
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 1m47s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 2m37s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 2m52s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 3m2s
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 31s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 2m44s
/ deploy (push) Successful in 48s
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
const { default: axios } = require("axios")
|
|
const qs = require("qs")
|
|
const { ctx } = require("@modjo/core")
|
|
// see https://nominatim.org/release-docs/latest/api/Reverse/
|
|
|
|
module.exports = async function nominatimReverse(coords, options = {}) {
|
|
const config = ctx.get("config.project")
|
|
const { nominatimUrl } = config
|
|
|
|
const logger = ctx.require("logger")
|
|
|
|
const [lon, lat] = coords
|
|
const search = qs.stringify({
|
|
format: "json", // see https://nominatim.org/release-docs/latest/api/Output/
|
|
zoom: 18,
|
|
...options,
|
|
lat,
|
|
lon,
|
|
})
|
|
|
|
let data
|
|
const url = `${nominatimUrl}/reverse?${search}`
|
|
try {
|
|
const res = await axios.request({
|
|
url,
|
|
method: "get",
|
|
headers: {
|
|
"accept-language": "fr", // RFC1766 ISO639
|
|
},
|
|
})
|
|
if (res.status !== 200) {
|
|
logger.error(
|
|
{ res, url },
|
|
"nominatim server did not answer with a HTTP code 200"
|
|
)
|
|
}
|
|
data = res.data
|
|
} catch (e) {
|
|
if (e.response?.data)
|
|
logger.error(
|
|
{ responseData: e.response.data, error: e },
|
|
"nominatim reverse failed"
|
|
)
|
|
else logger.error({ url, error: e }, "nominatim reverse failed")
|
|
}
|
|
return data
|
|
}
|