mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
updates to upload, move mock eventsource server into middleware
This commit is contained in:
@@ -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
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user