UNPKG

@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
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