mirror of
https://github.com/karl0ss/homepage.git
synced 2025-05-10 17:01:33 +01:00
allow endpoint specific maps
This commit is contained in:
parent
d7be64c3d9
commit
3f17618ad5
@ -5,11 +5,11 @@ import nzbgetProxyHandler from "utils/proxies/nzbget";
|
|||||||
import npmProxyHandler from "utils/proxies/npm";
|
import npmProxyHandler from "utils/proxies/npm";
|
||||||
import transmissionProxyHandler from "utils/proxies/transmission";
|
import transmissionProxyHandler from "utils/proxies/transmission";
|
||||||
|
|
||||||
function simpleArrayMapper(endpoint, targetEndpoint, data, mapper) {
|
function jsonArrayMapper(data, map) {
|
||||||
if ((data?.length > 0) && (endpoint === targetEndpoint)) {
|
if (data?.length > 0) {
|
||||||
const json = JSON.parse(data.toString());
|
const json = JSON.parse(data.toString());
|
||||||
if (json instanceof Array) {
|
if (json instanceof Array) {
|
||||||
return json.map(mapper);
|
return json.map(map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
@ -23,8 +23,11 @@ const serviceProxyHandlers = {
|
|||||||
radarr: genericProxyHandler,
|
radarr: genericProxyHandler,
|
||||||
sonarr: genericProxyHandler,
|
sonarr: genericProxyHandler,
|
||||||
lidarr: genericProxyHandler,
|
lidarr: genericProxyHandler,
|
||||||
readarr: { proxy: genericProxyHandler, mapper: (endpoint, data) =>
|
readarr: {
|
||||||
simpleArrayMapper(endpoint, "book", data, d => ({ statistics: { bookFileCount: d.statistics.bookFileCount } }))
|
proxy: genericProxyHandler,
|
||||||
|
maps: {
|
||||||
|
book: (data) => jsonArrayMapper(data, (d) => ({ statistics: { bookFileCount: d.statistics.bookFileCount } })),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
bazarr: genericProxyHandler,
|
bazarr: genericProxyHandler,
|
||||||
speedtest: genericProxyHandler,
|
speedtest: genericProxyHandler,
|
||||||
@ -58,9 +61,9 @@ export default async function handler(req, res) {
|
|||||||
return serviceProxyHandler(req, res);
|
return serviceProxyHandler(req, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { proxy, mapper } = serviceProxyHandler;
|
const { proxy, maps } = serviceProxyHandler;
|
||||||
if (proxy) {
|
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 { formatApiCall } from "utils/api-helpers";
|
||||||
import { httpProxy } from "utils/http";
|
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;
|
const { group, service, endpoint } = req.query;
|
||||||
|
|
||||||
if (group && service) {
|
if (group && service) {
|
||||||
@ -24,8 +24,8 @@ export default async function genericProxyHandler(req, res, mapper) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let resultData = data;
|
let resultData = data;
|
||||||
if (mapper) {
|
if (maps[endpoint]) {
|
||||||
resultData = mapper(endpoint, data);
|
resultData = maps[endpoint](data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contentType) res.setHeader("Content-Type", contentType);
|
if (contentType) res.setHeader("Content-Type", contentType);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user