Spaces:
Sleeping
Sleeping
File size: 3,445 Bytes
a55949b 314a3e4 a55949b 314a3e4 a55949b 336b464 a55949b 00320d3 6eb59c6 84c00ca 00320d3 84c00ca 00320d3 84c00ca 00320d3 84c00ca 00320d3 84c00ca ce4da38 218a33b ce4da38 218a33b ce4da38 218a33b 2481e05 218a33b 8bda14e 218a33b f311e4e 218a33b f311e4e 218a33b f311e4e 218a33b 314a3e4 6eb59c6 218a33b e7e6e29 314a3e4 ce4da38 |
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 |
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!!");
});
const TIMEOUT_VALUE = 10000;
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"){
compileJava(code, input, res);
} else if (lang == "Cpp") {
compileCpp(code, input, res);
}
} catch (e) {
console.log("error:" + e);
}
});
const compileJava = (code, input, res) => {
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",
{ timeout: TIMEOUT_VALUE },
(error, stdout, stderr) => {
if (error) {
if (error.code === 1) {
console.error(stderr);
res.send({ error: stderr });
} else if (error.killed) {
console.error("Time Limit Exceeded!!");
res.send({ error: "Time Limit Exceeded!!" });
} else {
console.error(stderr);
res.send({ error: stderr });
}
return;
}
console.log(stdout);
res.send({ output: stdout });
}
);
if (input) {
javaProcess.stdin.write(input);
javaProcess.stdin.end();
}
});
};
const compileCpp = (code, input, res) => {
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",
{ timeout: TIMEOUT_VALUE }, // Add timeout option
(error, stdout, stderr) => {
if (error) {
if (error.killed) {
console.error("Time Limit Exceeded!!");
res.send({ error: "Time Limit Exceeded!!" });
} else {
console.error(stderr);
res.send({ error: stderr });
}
return;
}
console.log(stdout);
res.send({ output: stdout });
}
);
if (input) {
cppProcess.stdin.write(input);
cppProcess.stdin.end();
}
});
};
const port = 7860;
app.listen(port, () => {
console.log(`Open http://localhost:${port}`);
});
|