43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
import express from "express";
|
|
import path from "path";
|
|
import { config } from "../config.js";
|
|
import { authMiddleware } from "./middlewares/auth.js";
|
|
import { libraryRouter } from "./routes/library.js";
|
|
import { playerRouter } from "./routes/player.js";
|
|
import { queueRouter } from "./routes/queue.js";
|
|
import { uploadsRouter } from "./routes/uploads.js";
|
|
import { ensureStorageLayout } from "./storage/storageManager.js";
|
|
|
|
const PUBLIC_DIR = path.join(process.cwd(), "public");
|
|
|
|
function startWebServer(dependencies) {
|
|
ensureStorageLayout();
|
|
|
|
const app = express();
|
|
app.use(express.json());
|
|
|
|
const apiRouter = express.Router();
|
|
apiRouter.use(authMiddleware);
|
|
apiRouter.use("/uploads", uploadsRouter(dependencies));
|
|
apiRouter.use("/queue", queueRouter(dependencies));
|
|
apiRouter.use("/library", libraryRouter(dependencies));
|
|
apiRouter.use("/player", playerRouter(dependencies));
|
|
|
|
app.use("/api", apiRouter);
|
|
app.get(["/jukebox", "/jukebox/"], (_req, res) =>
|
|
res.sendFile(path.join(PUBLIC_DIR, "jukebox.html"))
|
|
);
|
|
app.use(express.static(PUBLIC_DIR));
|
|
|
|
const port = Number(process.env.PORT || config.webServerPort || 3000);
|
|
|
|
app.listen(port, () => {
|
|
console.log(
|
|
`[${new Date().toLocaleString()}] Web control server listening on port ${port}`
|
|
);
|
|
});
|
|
|
|
return app;
|
|
}
|
|
|
|
export { startWebServer };
|