Files
WrenchBoardMediaMicro/index.js
T
CHIEFSOFT\ameye 6f2f1e1a28 log path
2024-04-12 21:43:17 -04:00

162 lines
5.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const express = require('express')
const fs = require('fs')
const db = require('./app/db')
const app = express()
const cors = require("cors");
const multer = require('multer')
const videoFileMap2={
'cdn':'videos/v1.mp4',
'generate-pass':'videos/v2.mp4',
'get-post':'videos/v3.mp4',
'tt1':'/opt/wrenchboard/TEST/COMMON/MEDIA/What Is Single Sign-on (SSO) How It Works-(1080p25).mp4',
'tt2':'/opt/wrenchboard/TEST/COMMON/MEDIA/What is RabbitMQ-(1080p30).mp4',
'tt3':'/opt/wrenchboard/TEST/COMMON/MEDIA/What is CORS-(1080p50).mp4',
'tt4':'/opt/wrenchboard/TEST/COMMON/MEDIA/SAML vs OAuth vs OIDC (explained simply!)-(1080p25).mp4',
'tt5':'/opt/wrenchboard/TEST/COMMON/MEDIA/Running RabbitMQ Locally with Docker-(1080p60).mp4',
'tt6':'/opt/wrenchboard/TEST/COMMON/MEDIA/React Proxy Easiest Fix to CORS Errors-(2160p24).mp4',
'tt7':'/opt/wrenchboard/TEST/COMMON/MEDIA/RabbitMQ Tutorial - Publisher and Consumer program with example in nodeJS-(686p30).mp4',
'tt8':'/opt/wrenchboard/TEST/COMMON/MEDIA/RabbitMQ - RPC with NodeJs (request-reply pattern)-(1080p60).mp4',
'tt9':'/opt/wrenchboard/TEST/COMMON/MEDIA/How to Install RabbitMQ Locally with Docker-(1080p60).mp4',
}
const videoFileMap={
'cdn':'videos/v1.mp4',
'generate-pass':'videos/v2.mp4',
'get-post':'videos/v3.mp4',
'tt1':'What Is Single Sign-on (SSO) How It Works-(1080p25).mp4',
'tt2':'What is RabbitMQ-(1080p30).mp4',
'tt3':'What is CORS-(1080p50).mp4',
'tt4':'SAML vs OAuth vs OIDC (explained simply!)-(1080p25).mp4',
'tt5':'Running RabbitMQ Locally with Docker-(1080p60).mp4',
'tt6':'React Proxy Easiest Fix to CORS Errors-(2160p24).mp4',
'tt7':'RabbitMQ Tutorial - Publisher and Consumer program with example in nodeJS-(686p30).mp4',
'tt8':'RabbitMQ - RPC with NodeJs (request-reply pattern)-(1080p60).mp4',
'tt9':'How to Install RabbitMQ Locally with Docker-(1080p60).mp4',
}
console.log("Finding File");
var corsOptions = {
origin: 'http://127.0.0.1:3000/',
optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
}
app.use(cors(corsOptions));
// ,cors(corsOptions)
const storage = multer.diskStorage({
destination: function(req, file, cb) {
/*
let uid = req.body.uid;
let job_uid = req.body.job_uid;
console.log(" req.body -> ", req.body)
console.log(" req.body.job_uid -> ", job_uid)
const fs = require('fs');
const dir = process.env.COMMON_TASKFILE_PATH + "/DUMMY/" + uid;
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
const dir2 = process.env.COMMON_TASKFILE_PATH + "/DUMMY/" + uid+"/"+job_uid;
if (!fs.existsSync(dir2)){
fs.mkdirSync(dir2);
}
return cb(null, dir2)
/opt/wrenchboard/TEST/DUMMY
process.env.COMMON_TASKFILE_PATH +"/DUMMY"
*/
return cb(null, '/opt/wrenchboard/TEST/DUMMY')
},
filename: function (req, file, cb) {
console.log(" AAAA --> req.body.job_uid -> ", req.body.job_uid)
return cb(null, `${Date.now()}_${file.originalname}`)
}
})
const upload = multer({storage})
app.post('/upload/task', upload.single('file'), (req, res) => {
console.log(req.body)
console.log(req.file)
return res.status(200).send('Completed')
})
app.get('/videos/:filename', (req, res)=>{
const fileName = req.params.filename;
let findFilename = 'What Is Single Sign-on (SSO) How It Works-(1080p25).mp4';
// var findFilename = '';
//c35c32bc-9ce4-4ca5-9afc-1ecddfd649f5
let Qstring = "SELECT * FROM common_media WHERE uid ='"+fileName+"'";
console.log("Qstring -> ", Qstring);
db.query(Qstring, function (err, result) {
try {
console.log("BEFORE ERR CHECK -> " , result);
if (err){
console.log("IN ERR CHECK -> " , err);
throw err;
}
// let resultItem = {
// "result": result.rows,
// "total_record": result.rowCount
// }
console.log("THIS IS RESULT --> ",result.rows[0].filename);
console.log("THIS IS RESULT COUNT --> ",result.rowCount);
if ( result.rowCount === 1){
findFilename = result.rows[0].filename;
}
//const filePath = videoFileMap[fileName]
const completeFile = process.env.COMMON_MEDIA_PATH + findFilename;
if(!completeFile){
console.log("Finding File Not Found ", completeFile);
return res.status(404).send('File not found')
}
console.log("Finding File Found ", completeFile);
const stat = fs.statSync(completeFile);
const fileSize = stat.size;
const range = req.headers.range;
if(range){
const parts = range.replace(/bytes=/, '').split('-')
const start = parseInt(parts[0], 10);
const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1;
const chunksize = end - start + 1;
const file = fs.createReadStream(completeFile, {start, end});
const head = {
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Accept-Ranges': 'bytes',
'Content-Length': chunksize,
'Content-Type': 'video/mp4'
};
res.writeHead(206, head);
file.pipe(res);
}
else{
const head = {
'Content-Length': fileSize,
'Content-Type': 'video/mp4'
};
res.writeHead(200, head);
fs.createReadStream(completeFile).pipe(res)
}
} catch (e) {
console.log("ERR->",e.message);
}
});
})
app.listen(3036, ()=>{
console.log('server is listening on post 3036')
})