From ec8700f3e997d407b179e47b63ebf02b174da475 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Mon, 26 Sep 2022 10:58:31 +0300 Subject: [PATCH] fix widgets without mappings --- src/pages/api/services/proxy.js | 56 ++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index 2db0d8faa..895f86178 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -20,34 +20,38 @@ export default async function handler(req, res) { if (serviceProxyHandler instanceof Function) { // map opaque endpoints to their actual endpoint - const mapping = widget?.mappings?.[req.query.endpoint]; - const mappingParams = mapping.params; - const map = mapping?.map; - const endpoint = mapping?.endpoint; - const endpointProxy = mapping?.proxyHandler || serviceProxyHandler; - req.method = mapping?.method || "GET"; - - if (!endpoint) { - logger.debug("Unsupported service endpoint: %s", type); - return res.status(403).json({ error: "Unsupported service endpoint" }); + if (widget?.mappings) { + const mapping = widget?.mappings?.[req.query.endpoint]; + const mappingParams = mapping.params; + const map = mapping?.map; + const endpoint = mapping?.endpoint; + const endpointProxy = mapping?.proxyHandler || serviceProxyHandler; + req.method = mapping?.method || "GET"; + + if (!endpoint) { + logger.debug("Unsupported service endpoint: %s", type); + return res.status(403).json({ error: "Unsupported service endpoint" }); + } + + req.query.endpoint = endpoint; + if (req.query.segments) { + const segments = JSON.parse(req.query.segments); + req.query.endpoint = formatApiCall(endpoint, segments); + } + if (req.query.query) { + const queryParams = JSON.parse(req.query.query); + const query = new URLSearchParams(mappingParams.map((p) => [p, queryParams[p]])); + req.query.endpoint = `${req.query.endpoint}?${query}`; + } + + if (endpointProxy instanceof Function) { + return endpointProxy(req, res, map); + } + + return serviceProxyHandler(req, res, map); } - req.query.endpoint = endpoint; - if (req.query.segments) { - const segments = JSON.parse(req.query.segments); - req.query.endpoint = formatApiCall(endpoint, segments); - } - if (req.query.query) { - const queryParams = JSON.parse(req.query.query); - const query = new URLSearchParams(mappingParams.map((p) => [p, queryParams[p]])); - req.query.endpoint = `${req.query.endpoint}?${query}`; - } - - if (endpointProxy instanceof Function) { - return endpointProxy(req, res, map); - } - - return serviceProxyHandler(req, res, map); + return serviceProxyHandler(req, res); } logger.debug("Unknown proxy service type: %s", type);