Files
homepage/src/widgets/unifi_drive/proxy.js
T

37 lines
987 B
JavaScript

import getServiceWidget from "utils/config/service-helpers";
import createUnifiProxyHandler from "utils/proxy/handlers/unifi";
import { httpProxy } from "utils/proxy/http";
const drivePrefix = "/proxy/drive";
async function getWidget(req, logger) {
const { group, service, index } = req.query;
if (!group || !service) return null;
const widget = await getServiceWidget(group, service, index);
if (!widget) {
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
return null;
}
return widget;
}
async function resolveRequestContext({ cachedPrefix, widget }) {
if (cachedPrefix !== null) {
return { prefix: cachedPrefix };
}
const [, , , responseHeaders] = await httpProxy(widget.url);
return {
prefix: drivePrefix,
csrfToken: responseHeaders?.["x-csrf-token"],
};
}
export default createUnifiProxyHandler({
proxyName: "unifiDriveProxyHandler",
resolveWidget: getWidget,
resolveRequestContext,
});