allow endpoint specific maps

pull/192/head^2
Ben Phelps 2 years ago
parent d7be64c3d9
commit 3f17618ad5

@ -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);
}
}

@ -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);

Loading…
Cancel
Save