allow endpoint specific maps
This commit is contained in:
parent
d7be64c3d9
commit
3f17618ad5
2 changed files with 13 additions and 10 deletions
|
@ -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…
Add table
Reference in a new issue