@fdm-monster/server
Version:
FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.
63 lines (62 loc) • 2.62 kB
JavaScript
import { DITokens } from "../container.tokens.js";
import "../services/printer-api.interface.js";
import { asValue } from "awilix";
//#region src/middleware/printer.ts
const printerIdToken = "currentPrinterId";
const printerApiToken = "printerApi";
const currentPrinterToken = "currentPrinter";
const printerLoginToken = "printerLogin";
const printerResolveMiddleware = (key = "id") => {
return (req, res, next) => {
const printerCache = req.container.resolve(DITokens.printerCache);
const settingsService = req.container.resolve(DITokens.settingsStore);
const moonrakerEnabled = settingsService.getServerSettings().experimentalMoonrakerSupport;
const prusaLinkEnabled = settingsService.getServerSettings().experimentalPrusaLinkSupport;
const bambuEnabled = settingsService.getServerSettings().experimentalBambuSupport;
let scopedPrinter = void 0;
let loginDto = void 0;
const printerIdParam = req.params[key];
if (printerIdParam) {
const printerId = Number.parseInt(printerIdParam, 10);
scopedPrinter = printerCache.getCachedPrinterOrThrow(printerId);
loginDto = printerCache.getLoginDto(printerId);
req.container.register({
[currentPrinterToken]: asValue(scopedPrinter),
[printerLoginToken]: asValue(loginDto),
[printerIdToken]: asValue(printerId)
});
switch (scopedPrinter.printerType) {
case 0: {
const octoprintApiInstance = req.container.resolve(DITokens.octoprintApi);
req.container.register({ [printerApiToken]: asValue(octoprintApiInstance) });
break;
}
case 1: {
const moonrakerInstance = req.container.resolve(DITokens.moonrakerApi);
req.container.register({ [printerApiToken]: moonrakerEnabled ? asValue(moonrakerInstance) : asValue(void 0) });
break;
}
case 2: {
const prusaLinkInstance = req.container.resolve(DITokens.prusaLinkApi);
req.container.register({ [printerApiToken]: prusaLinkEnabled ? asValue(prusaLinkInstance) : asValue(void 0) });
break;
}
case 3: {
const bambuInstance = req.container.resolve(DITokens.bambuApi);
bambuInstance.setPrinterId(printerId);
req.container.register({ [printerApiToken]: bambuEnabled ? asValue(bambuInstance) : asValue(void 0) });
break;
}
}
} else req.container.register({
[currentPrinterToken]: asValue(void 0),
[printerLoginToken]: asValue(void 0),
[printerIdToken]: asValue(void 0),
[printerApiToken]: asValue(void 0)
});
next();
};
};
//#endregion
export { currentPrinterToken, printerApiToken, printerIdToken, printerLoginToken, printerResolveMiddleware };
//# sourceMappingURL=printer.js.map