Skyvern/skyvern-frontend/artifactServer.js
2024-04-07 21:52:59 +03:00

53 lines
1.2 KiB
JavaScript

import express from "express";
import fs from "fs";
import cors from "cors";
const app = express();
app.use(cors());
app.get("/artifact/recording", (req, res) => {
const range = req.headers.range;
const path = req.query.path;
const videoSize = fs.statSync(path).size;
const chunkSize = 1 * 1e6;
const start = Number(range.replace(/\D/g, ""));
const end = Math.min(start + chunkSize, videoSize - 1);
const contentLength = end - start + 1;
const headers = {
"Content-Range": `bytes ${start}-${end}/${videoSize}`,
"Accept-Ranges": "bytes",
"Content-Length": contentLength,
"Content-Type": "video/mp4",
};
res.writeHead(206, headers);
const stream = fs.createReadStream(path, {
start,
end,
});
stream.pipe(res);
});
app.get("/artifact/image", (req, res) => {
const path = req.query.path;
res.sendFile(path);
});
app.get("/artifact/json", (req, res) => {
const path = req.query.path;
const contents = fs.readFileSync(path);
try {
const data = JSON.parse(contents);
res.json(data);
} catch (err) {
res.status(500).send(err);
}
});
app.get("/artifact/text", (req, res) => {
const path = req.query.path;
const contents = fs.readFileSync(path);
res.send(contents);
});
app.listen(9090);