mirror of
https://github.com/gethomepage/homepage.git
synced 2026-09-29 23:41:16 -07:00
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
37 lines
987 B
JavaScript
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,
|
|
});
|