2025-05-07 15:36:59 -07:00
|
|
|
require("dotenv").config();
|
2025-04-29 12:01:10 -07:00
|
|
|
const cors = require("cors");
|
|
|
|
|
const passport = require("passport");
|
|
|
|
|
const session = require("express-session");
|
2025-04-24 11:36:30 -07:00
|
|
|
|
2025-05-20 17:03:18 -07:00
|
|
|
const axios = require("axios");
|
|
|
|
|
|
2025-04-24 11:36:30 -07:00
|
|
|
const express = require("express");
|
2025-05-05 09:57:33 -07:00
|
|
|
const AWS = require("aws-sdk");
|
2025-04-25 11:07:46 -07:00
|
|
|
const instructorRouter = require("./routes/InstructorRouter");
|
|
|
|
|
const studentRouter = require("./routes/StudentRouter");
|
2025-04-24 11:36:30 -07:00
|
|
|
|
2025-05-20 17:03:18 -07:00
|
|
|
const DEPLOY_API_URL = process.env.DEPLOY_API_URL || "http://localhost:3600";
|
|
|
|
|
|
|
|
|
|
// const s3 = new AWS.S3({
|
|
|
|
|
// endpoint: process.env.AWS_ENDPOINT_URL_S3,
|
|
|
|
|
// accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
|
|
|
// secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
|
|
|
|
|
// region: process.env.AWS_REGION,
|
|
|
|
|
// s3ForcePathStyle: true,
|
|
|
|
|
// });
|
|
|
|
|
// const BUCKET = process.env.COMMON_BUCKET;
|
2025-05-05 09:57:33 -07:00
|
|
|
|
2025-04-24 11:36:30 -07:00
|
|
|
const app = express();
|
2025-04-29 12:01:10 -07:00
|
|
|
app.use(express.json());
|
|
|
|
|
app.use(express.urlencoded({ extended: true }));
|
2025-05-02 12:43:56 -07:00
|
|
|
app.use(cors());
|
2025-04-29 12:01:10 -07:00
|
|
|
|
|
|
|
|
// app.use(
|
|
|
|
|
// session({
|
|
|
|
|
// secret: process.env.AUTH_SESSION_KEY,
|
|
|
|
|
// resave: false,
|
|
|
|
|
// saveUninitialized: false,
|
|
|
|
|
// cookie: {
|
|
|
|
|
// maxAge: 24 * 60 * 60 * 1000, // 1 day
|
|
|
|
|
// },
|
|
|
|
|
// })
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
|
|
// app.use(passport.initialize());
|
|
|
|
|
// app.use(passport.session());
|
|
|
|
|
|
|
|
|
|
// app.use(
|
|
|
|
|
// cors({
|
|
|
|
|
// origin: process.env.ACCEPTED_ORIGINS.split(","),
|
|
|
|
|
// methods: ["GET", "POST"],
|
|
|
|
|
// credentials: true,
|
|
|
|
|
// })
|
2025-05-05 09:57:33 -07:00
|
|
|
// );
|
2025-04-24 11:36:30 -07:00
|
|
|
|
2025-04-25 11:07:46 -07:00
|
|
|
app.use("/instructor", instructorRouter);
|
|
|
|
|
app.use("/student", studentRouter);
|
2025-04-24 11:36:30 -07:00
|
|
|
|
2025-05-05 09:57:33 -07:00
|
|
|
app.get("/", (req, res) => {
|
2025-05-07 15:36:59 -07:00
|
|
|
res.send("OK");
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.get("/notebook/save/:appname", async (req, res) => {
|
|
|
|
|
});
|
2025-05-05 09:57:33 -07:00
|
|
|
|
|
|
|
|
app.get("/notebook/:appName", async (req, res) => {
|
|
|
|
|
try {
|
|
|
|
|
const { appName } = req.params;
|
2025-05-20 17:03:18 -07:00
|
|
|
console.log(`Fetching notebook for appName: ${appName}`);
|
|
|
|
|
|
|
|
|
|
const response = await axios.get(`${DEPLOY_API_URL}/notebook/${appName}`);
|
|
|
|
|
if (response.status !== 200) {
|
|
|
|
|
console.log(`Failed to restart app for appName: ${appName}`);
|
|
|
|
|
return res.status(500).json({ error: "Failed to restart app" });
|
2025-05-05 09:57:33 -07:00
|
|
|
}
|
2025-05-20 17:03:18 -07:00
|
|
|
|
|
|
|
|
console.log(`Notebook data received for appName: ${appName}`);
|
|
|
|
|
res.status(200).json(response.data);
|
|
|
|
|
|
2025-05-05 09:57:33 -07:00
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Failed to load notebook:", error);
|
|
|
|
|
res.status(500).json({ error: "Failed to load notebook" });
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2025-05-02 18:33:50 -07:00
|
|
|
const port = process.env.NODE_PORT || 8080;
|
2025-05-07 15:36:59 -07:00
|
|
|
app.listen({ port: port, host: "::", ipv6Only: false }, () =>
|
|
|
|
|
console.log(`Listening on ${port}...`)
|
|
|
|
|
);
|