all repos — caroster @ d6aab0312acbe808a9a7daeaaed71fbd73ab05d1

[Octree] Group carpool to your event https://caroster.io

frontend/pages/api/mapbox/searchbox/suggest.ts (view raw)

 1import type {NextApiRequest, NextApiResponse} from 'next';
 2
 3export type MapboxSuggestion = {name: string; mapbox_id: string, address: string; place_formatted: string};
 4
 5const {MAPBOX_TOKEN, MAPBOX_URL} = process.env;
 6
 7export default async function handler(
 8  req: NextApiRequest,
 9  res: NextApiResponse<Array<MapboxSuggestion>>
10) {
11  const {search, proximity = 'ip', sessionToken, locale} = req.query;
12  if (!search) return res.status(400).send(null);
13  else if (!MAPBOX_TOKEN) return res.status(500).send(null);
14
15  const url = `${MAPBOX_URL}search/searchbox/v1/suggest?q=${search}&proximity=${proximity}&language=${locale}&access_token=${MAPBOX_TOKEN}&session_token=${sessionToken}`;
16
17  const mapBoxResult = await fetch(url)
18    .then(response => {
19      if (response.status === 429) {
20        throw 'MAPBOX_RATE_LIMIT_EXCEEDED';
21      }
22      return response.json();
23    })
24    .catch(error => {
25      console.error(error);
26    });
27
28  if (mapBoxResult?.suggestions) {
29    console.log(url)
30    res.status(200).send(mapBoxResult.suggestions);
31    return;
32  }
33  res.send([]);
34}