updates to upload, move mock eventsource server into middleware

This commit is contained in:
proddy
2024-08-15 09:59:08 +02:00
parent 5a058746bb
commit 4e640a0abe
8 changed files with 89 additions and 754 deletions

View File

@@ -1,13 +1,40 @@
import formidable from "formidable";
function pad(number) {
var r = String(number);
if (r.length === 1) {
r = '0' + r;
}
return r;
}
// e.g. 2024-03-29 07:02:37.856
Date.prototype.toISOString = function () {
return (
this.getUTCFullYear() +
'-' +
pad(this.getUTCMonth() + 1) +
'-' +
pad(this.getUTCDate()) +
' ' +
pad(this.getUTCHours()) +
':' +
pad(this.getUTCMinutes()) +
':' +
pad(this.getUTCSeconds()) +
'.' +
String((this.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)
);
};
export default () => {
return {
name: "vite:mockserver",
configureServer: async (server) => {
// catch any file uploads
server.middlewares.use(async (req, res, next) => {
// catch any file uploads
if (req.url.startsWith("/rest/uploadFile")) {
let progress = 0;
@@ -34,33 +61,65 @@ export default () => {
return;
}
const upploaded_file = files.file[0];
const file_name = upploaded_file.originalFilename;
const file_extension = file_name.substring(file_name.lastIndexOf('.') + 1);
// only process when we have a file
if (Object.keys(files).length > 0) {
console.log("Filename: " + file_name);
console.log("Extension: " + file_extension);
console.log("File size: " + file_size);
const uploaded_file = files.file[0];
const file_name = uploaded_file.originalFilename;
const file_extension = file_name.substring(file_name.lastIndexOf('.') + 1);
if (file_extension === 'bin' || file_extension === 'json') {
console.log("File uploaded successfully!");
} else if (file_extension === 'md5') {
// return res.json({ md5: 'ef4304fc4d9025a58dcf25d71c882d2c' });
console.log("MD5 hash generated successfully!");
res.end(
JSON.stringify({
md5: 'ef4304fc4d9025a58dcf25d71c882d2c',
}),
);
} else {
res.statusCode = 400;
console.log("Invalid file extension!");
console.log("Filename: " + file_name);
console.log("Extension: " + file_extension);
console.log("File size: " + file_size);
if (file_extension === 'bin' || file_extension === 'json') {
console.log("File uploaded successfully!");
} else if (file_extension === 'md5') {
console.log("MD5 hash generated successfully!");
res.end(
JSON.stringify({
md5: 'ef4304fc4d9025a58dcf25d71c882d2c',
}),
);
} else {
res.statusCode = 400;
console.log("Invalid file extension!");
}
}
res.end();
}
// SSE Eventsource
else if (req.url.startsWith("/es/log")) {
res.writeHead(200, {
Connection: 'keep-alive',
'Cache-Control': 'no-cache',
'Content-Type': 'text/event-stream'
});
let count = 0;
const interval = setInterval(() => {
const data = {
t: new Date().toISOString(),
l: (3 + (count % 6)),
i: count,
n: 'system',
m: 'message #' + count++
};
res.write(`data: ${JSON.stringify(data)}\n\n`);
}, 1000);
// if client closes connection
res.on('close', () => {
console.log('Closing ES connection');
clearInterval(interval);
res.end();
});
} else {
next(); // call next middleware
next(); // move on to the next middleware function in chain
}
});
},