diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index b2b9bcd05..ef7bcfd81 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -5,11 +5,11 @@ import nzbgetProxyHandler from "utils/proxies/nzbget"; import npmProxyHandler from "utils/proxies/npm"; import transmissionProxyHandler from "utils/proxies/transmission"; -function simpleArrayMapper(endpoint, targetEndpoint, data, mapper) { - if ((data?.length > 0) && (endpoint === targetEndpoint)) { +function jsonArrayMapper(data, map) { + if (data?.length > 0) { const json = JSON.parse(data.toString()); if (json instanceof Array) { - return json.map(mapper); + return json.map(map); } } return data; @@ -23,8 +23,11 @@ const serviceProxyHandlers = { radarr: genericProxyHandler, sonarr: genericProxyHandler, lidarr: genericProxyHandler, - readarr: { proxy: genericProxyHandler, mapper: (endpoint, data) => - simpleArrayMapper(endpoint, "book", data, d => ({ statistics: { bookFileCount: d.statistics.bookFileCount } })) + readarr: { + proxy: genericProxyHandler, + maps: { + book: (data) => jsonArrayMapper(data, (d) => ({ statistics: { bookFileCount: d.statistics.bookFileCount } })), + }, }, bazarr: genericProxyHandler, speedtest: genericProxyHandler, @@ -58,9 +61,9 @@ export default async function handler(req, res) { return serviceProxyHandler(req, res); } - const { proxy, mapper } = serviceProxyHandler; + const { proxy, maps } = serviceProxyHandler; if (proxy) { - return proxy(req, res, mapper); + return proxy(req, res, maps); } } diff --git a/src/utils/proxies/generic.js b/src/utils/proxies/generic.js index 628bfe6c5..8954636b5 100644 --- a/src/utils/proxies/generic.js +++ b/src/utils/proxies/generic.js @@ -2,7 +2,7 @@ import getServiceWidget from "utils/service-helpers"; import { formatApiCall } from "utils/api-helpers"; import { httpProxy } from "utils/http"; -export default async function genericProxyHandler(req, res, mapper) { +export default async function genericProxyHandler(req, res, maps) { const { group, service, endpoint } = req.query; if (group && service) { @@ -24,8 +24,8 @@ export default async function genericProxyHandler(req, res, mapper) { }); let resultData = data; - if (mapper) { - resultData = mapper(endpoint, data); + if (maps[endpoint]) { + resultData = maps[endpoint](data); } if (contentType) res.setHeader("Content-Type", contentType);