const express = require("express"); const router = express.Router(); const logger = require("../../server/utils/logger"); const sendEmail = require("../email/sendemail"); const data = require("../data/data"); const bodyParser = require("body-parser"); const ioevent = require("../ioevent/ioevent"); const taskHandler = require("../tasks/tasks"); const os = require("../opensearch/os-handler"); const eventAuthorizationMiddleware = require("../middleware/eventAuthorizationMIddleware"); const validateFirebaseIdTokenMiddleware = require("../middleware/validateFirebaseIdTokenMiddleware"); const withUserGraphQLClientMiddleware = require("../middleware/withUserGraphQLClientMiddleware"); const { taskAssignedEmail, tasksRemindEmail } = require("../email/tasksEmails"); const { canvastest } = require("../render/canvas-handler"); const { alertCheck } = require("../alerts/alertcheck"); //Test route to ensure Express is responding. router.get("/test", eventAuthorizationMiddleware, async function (req, res) { const commit = require("child_process").execSync("git rev-parse --short HEAD"); // console.log(app.get('trust proxy')); // console.log("remoteAddress", req.socket.remoteAddress); // console.log("X-Forwarded-For", req.header('x-forwarded-for')); logger.log("test-api-status", "DEBUG", "api", { commit }); // sendEmail.sendServerEmail({ // subject: `API Check - ${process.env.NODE_ENV}`, // text: `Server API check has come in. Remote IP: ${req.socket.remoteAddress}, X-Forwarded-For: ${req.header('x-forwarded-for')}`, // }); sendEmail.sendServerEmail({ subject: `API Check - ${process.env.NODE_ENV}`, text: `Server API check has come in.` }); res.status(200).send(`OK - ${commit}`); }); router.get("/test-logs", eventAuthorizationMiddleware, (req, res) => { const { logger } = req; // // Test 1: Log with a message that exceeds the size limit, triggering an upload to S3. const largeMessage = "A".repeat(256 * 1024 + 1); // Message larger than the log size limit logger.log(largeMessage, "error", "user123", null, { detail: "large log entry" }); // Test 2: Log with a message that is within the size limit, should log directly using winston. const smallMessage = "A small log message"; logger.log(smallMessage, "info", "user123", null, { detail: "small log entry" }); // Test 3: Log with the `upload` flag set to `true`, forcing the log to be uploaded to S3. logger.log( "This log will be uploaded to S3 regardless of size", "warning", "user123", null, { detail: "upload log" }, true ); // Test 4: Log with a message that doesn't exceed the size limit and doesn't require an upload. logger.log("Normal log entry", "debug", "user123", { id: 4 }, { detail: "normal log entry" }); return res.status(500).send("Logs tested."); }); // Search router.post("/search", validateFirebaseIdTokenMiddleware, withUserGraphQLClientMiddleware, os.search); router.post("/opensearch", eventAuthorizationMiddleware, os.handler); // IO Events router.post("/ioevent", ioevent.default); // Email router.post("/sendemail", validateFirebaseIdTokenMiddleware, sendEmail.sendEmail); router.post("/emailbounce", bodyParser.text(), sendEmail.emailBounce); // Tasks Email Handler router.post("/tasks-assigned-handler", eventAuthorizationMiddleware, taskAssignedEmail); router.post("/tasks-remind-handler", eventAuthorizationMiddleware, tasksRemindEmail); // Handlers router.post("/record-handler/arms", data.arms); router.post("/taskHandler", validateFirebaseIdTokenMiddleware, taskHandler.taskHandler); // Canvas Test router.post("/canvastest", validateFirebaseIdTokenMiddleware, canvastest); // Alert Check router.post("/alertcheck", eventAuthorizationMiddleware, alertCheck); module.exports = router;