UNPKG

strapi-plugin-map-box

Version:
117 lines (116 loc) 2.77 kB
const bootstrap = ({ strapi }) => { }; const destroy = ({ strapi }) => { }; const register = ({ strapi }) => { strapi.customFields.register({ name: "map-box", type: "json" }); }; const config = { default: {}, validator() { } }; const contentTypes = {}; function getPluginConfig(strapi, name) { const config2 = strapi.plugin("map-box").config(name); return config2; } const controller = ({ strapi }) => ({ async locationSearch(ctx) { const query = ctx.params.query; console.log("Query from URL:", query); const result = await strapi.plugin("map-box").service("service").locationSearch(query); ctx.body = result; }, async getSettings(ctx) { const config2 = getPluginConfig(strapi, "public"); ctx.body = config2; } }); const controllers = { controller }; const middlewares = {}; const policies = {}; const contentAPIRoutes = []; const adminAPIRoutes = [ { method: "GET", path: "/location-search/:query", handler: "controller.locationSearch", config: { policies: ["admin::isAuthenticatedAdmin"] } }, { method: "GET", path: "/get-settings", handler: "controller.getSettings", config: { policies: ["admin::isAuthenticatedAdmin"] } } ]; const routes = { "content-api": { type: "content-api", routes: contentAPIRoutes }, admin: { type: "admin", routes: adminAPIRoutes } }; const service = ({ strapi }) => ({ async locationSearch(query) { try { const pluginSettings = getPluginConfig(strapi, "public"); console.log("pluginSettings", pluginSettings); if (!pluginSettings.accessToken) { return { error: "MapBox access token is not configured. Please add your access token in the plugin settings.", features: [] }; } const MAPBOX_ACCESS_TOKEN = pluginSettings.accessToken; console.log("MAPBOX_ACCESS_TOKEN", MAPBOX_ACCESS_TOKEN); console.log("Searching for:", query); const response = await fetch( `https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(query)}.json?access_token=${MAPBOX_ACCESS_TOKEN}` ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); return data; } catch (error) { console.error("Error searching location:", error); return { error: error instanceof Error ? error.message : "An error occurred", features: [] }; } } }); const services = { service }; const index = { register, bootstrap, destroy, config, controllers, routes, services, contentTypes, policies, middlewares }; export { index as default }; //# sourceMappingURL=index.mjs.map