strapi-plugin-map-box
Version:
116 lines (115 loc) • 2.78 kB
JavaScript
;
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
};
module.exports = index;
//# sourceMappingURL=index.js.map