Spaces:
Sleeping
Sleeping
File size: 4,251 Bytes
a55949b 314a3e4 a55949b 314a3e4 a55949b 336b464 a55949b 84c00ca 93d296d 41a4668 93d296d 41a4668 93d296d 41a4668 93d296d 41a4668 93d296d f311e4e 93d296d f311e4e 84c00ca 314a3e4 93d296d e7e6e29 314a3e4 93d296d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const cors = require("cors");
const fs = require("fs");
const { exec } = require("child_process");
const compiler = require("compilex");
const options = { stats: true };
compiler.init(options);
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
app.get("/", function (req, res) {
res.send("Hello World!!");
});
app.post("/compile", function (req, res) {
var code = req.body.code;
var input = req.body.input;
var lang = req.body.lang;
try {
if (lang == "Python") {
if (!input) {
var envData = { OS: "linux" };
compiler.compilePython(envData, code, function (data) {
if (data.output) {
res.send(data);
} else {
res.send({ error: data.error });
}
});
} else {
var envData = { OS: "linux" };
compiler.compilePythonWithInput(envData, code, input, function (data) {
if (data.output) {
res.send(data);
} else {
res.send({ error: data.error });
}
});
}
} else if (lang == "Java") {
fs.writeFile("/code/temp/Main.java", code, (err) => {
if (err) {
console.error(err);
res.status(500).send("Error writing Java file");
return;
}
const javaProcess = exec(
"javac -d /code/temp /code/temp/Main.java && java -cp /code/temp Main",
(error, stdout, stderr) => {
if (error) {
console.error(error);
res.send({ error: stderr });
return;
}
console.log(stdout);
console.error(stderr);
res.send({ output: stdout });
}
);
if (input) {
javaProcess.stdin.write(input);
javaProcess.stdin.end();
}
// Timeout functionality
const timeout = 5000; // 5 seconds timeout
let isTimeout = false;
const timeoutId = setTimeout(() => {
isTimeout = true;
javaProcess.kill(); // Kill the process if it exceeds the timeout
res.status(408).send({ error: "Time Limit Exceeded" });
}, timeout);
javaProcess.on("exit", () => {
clearTimeout(timeoutId); // Clear the timeout if the process exits before the timeout
if (!isTimeout) {
res.send({ output: stdout });
}
});
});
} else if (lang == "Cpp") {
fs.writeFile("/code/temp/Main.cpp", code, (err) => {
if (err) {
console.error(err);
res.status(500).send("Error writing C++ file");
return;
}
const cppProcess = exec(
"g++ -o /code/temp/Main /code/temp/Main.cpp && /code/temp/Main",
(error, stdout, stderr) => {
if (error) {
console.error(error);
res.send({ error: stderr });
return;
}
console.log(stdout);
console.error(stderr);
res.send({ output: stdout });
}
);
if (input) {
cppProcess.stdin.write(input);
cppProcess.stdin.end();
}
// Timeout functionality
const timeout = 5000; // 5 seconds timeout
let isTimeout = false;
const timeoutId = setTimeout(() => {
isTimeout = true;
cppProcess.kill(); // Kill the process if it exceeds the timeout
res.status(408).send({ error: "Time Limit Exceeded" });
}, timeout);
cppProcess.on("exit", () => {
clearTimeout(timeoutId); // Clear the timeout if the process exits before the timeout
if (!isTimeout) {
res.send({ output: stdout });
}
});
});
}
} catch (e) {
console.log("error:" + e);
}
});
const port = 7860;
app.listen(port, () => {
console.log(`Open http://localhost:${port}`);
});
|