ecliptica/server/routers/pen-plotter/app.js
2023-11-25 11:56:14 +03:00

92 lines
2.6 KiB
JavaScript

"use strict";
var __awaiter =
(this && this.__awaiter) ||
function (thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P
? value
: new P(function (resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done
? resolve(result.value)
: adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const paths_1 = require("./paths");
const express_1 = __importDefault(require("express"));
const dotenv_1 = __importDefault(require("dotenv"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
// Initialize express
const app = (0, express_1.default)();
// Load environment variables
dotenv_1.default.config();
// Parse JSON bodies
app.use(express_1.default.json());
// CORS
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE");
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
next();
});
// Add the required directories
app.use((req, res, next) => {
const directories = ["/static", "/profiles"];
directories.forEach((dir) => {
if (!fs_1.default.existsSync(paths_1.BASE_PATH + dir)) {
fs_1.default.mkdirSync(paths_1.BASE_PATH + dir);
}
});
next();
});
// TODO: Remove this in production
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
// Serve Static generated SVGs
app.get("/static/:name", (req, res, next) =>
__awaiter(void 0, void 0, void 0, function* () {
const fileName = req.params.name;
const filePath = `${paths_1.STATIC_PATH}/${fileName}`;
const file = yield fs_1.default.readFileSync(filePath);
res.setHeader("Content-Type", "image/svg+xml");
res.send(file);
})
);
app.use("/api", require("./routes/api").default);
// Start server
const port = process.env.PORT || 5000;
app.listen(port, () => {
console.log(`Server started on port ${port}`);
});