Files
CHIEFSOFT\ameye 952782c48f member id
2024-06-25 14:45:14 -04:00

555 lines
23 KiB
JavaScript
Raw Permalink 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')
require('dotenv').config();
const ENV_PARAM = process.env;
// 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',
// }
//https://dev140.apitest.wrenchboard.com/
// http://127.0.0.1:3000/
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));
app.use(cors());
// ,cors(corsOptions)
const storage = multer.diskStorage({
destination: function(req, file, cb) {
console.log(" process.env.COMMON_DUMMY_PATH-> ", process.env.COMMON_DUMMY_PATH)
return cb(null, 'wrenchboard/wrenchboard/TEST/DUMMY')
//return cb(null, '/usr/src/app/videos')
},
filename: function (req, file, cb) {
console.log("WHAT FILE ---- > ", file, req );
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)
let uid = req.body.uid;
let job_uid = req.body.job_uid;
console.log(" req.body.uid -> ", uid)
console.log(" req.body.job_uid -> ", job_uid)
console.log(" process.env.COMMON_TASKF_PATH-> ", process.env.COMMON_TASKF_PATH)
let destinationDir = process.env.COMMON_TASKF_PATH !== undefined ? process.env.COMMON_TASKF_PATH : '/opt/wrenchboard/TEST/TASKFILE';
const fs = require('fs');
const dir = destinationDir + "/" + job_uid;
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
const oldPath = req.file.path;
const newPath = dir + "/" + req.file.filename;
var result_list ='';
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!');
console.log('Start::Database Registration!');
var data = {
"member_uid": req.body.uid,
"job_uid": req.body.job_uid,
"filename": req.file.filename,
"originalname": req.file.originalname,
"mimetype": req.file.mimetype,
"size": req.file.size,
"encoding": req.file.encoding
};
console.log("DATA - > ", data);
var queryText = 'INSERT INTO members_jobs_files( member_uid,job_uid,filename,originalname,mimetype,size,encoding ) VALUES($1,$2,$3,$4,$5,$6,$7) RETURNING uid';
db.query(queryText, [data.member_uid,data.job_uid,data.filename,data.originalname,data.mimetype,data.size,data.encoding], function(dbErr, result) {
if (dbErr) {
console.log("DataError - > ", dbErr.toString());
}else{
console.log("DB Result - > " , result.rows);
result_list = result.rows;
}
console.log('End::Database Registration!');
})
return res.status(200).json({'status': 'Completed', 'internal_return': 0, 'result_list': result_list })
//return res.status(200).send('Completed')
})
})
app.post('/upload/contract', upload.single('file'), (req, res) => {
// console.log("req.body = > ",req.body);
// console.log("res.body = > ",res.body);
// console.log("req = > ",req);
// console.log("res = > ",res);
// const file_size = req.file.size;
// const file_name = req.file.originalname;
// const file_type = req.file.mimetype;
// const file_encoding = req.file.encoding;
let member_id = req.body.member_id;
let contract = req.body.contract;
console.log("******** 01 req.body.member_id -> ", member_id)
console.log("******** 02 req.body.contract -> ", contract)
console.log("******** 03 process.env.COMMON_CONTRACT_PATH-> ", process.env.COMMON_CONTRACT_PATH)
console.log("******** 04 ENV_PARAM.COMMON_CONTRACT_PATH -> ", ENV_PARAM.COMMON_CONTRACT_PATH)
let destinationDir = process.env.COMMON_CONTRACT_PATH !== undefined ? process.env.COMMON_CONTRACT_PATH : 'wrenchboard/wrenchboard/TEST/CONTRACTS';
const fs = require('fs');
const dir = destinationDir + "/" + contract;
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
console.log("DESTINATION FOLDER == == " , dir);
const oldPath = req.file.path;
const newPath = dir + "/" + req.file.filename;
var result_list ='';
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!');
console.log('Start::Database Registration!');
var data2 = {
"member_id": member_id,
"contract": req.body.contract,
"msg_type": req.body.msg_type,
"filename": req.file.filename,
"originalname": req.file.originalname,
"mimetype": req.file.mimetype,
"size": req.file.mimetype,
"encoding": req.file.encoding
};
var data = {
"member_id": member_id,
"contract": req.body.contract,
"msg_type": req.body.msg_type,
"filename": req.file.filename,
"originalname": req.file.originalname,
"mimetype": req.file.mimetype,
"encoding": req.file.encoding
};
console.log("DATA - > ", data);
var queryText = 'INSERT INTO jobs_contract_message( member_id,contract,msg_type,message ) VALUES($1,$2,$3,$4) RETURNING uid';
db.query(queryText, [data.member_id, data.contract, data.msg_type, data.filename], function(dbErr, result) {
if (dbErr) {
console.log("DataError - > ", dbErr.toString());
}else{
console.log("DB Result - > " , result.rows);
result_list = result.rows;
}
console.log('End::Database Registration!');
})
return res.status(200).json({'status': 'Completed', 'internal_return': 0, 'result_list': result_list })
//return res.status(200).send('Completed')
})
})
app.post("/upload/resources", upload.array("files"), (req, res) => {
// Sets multer to intercept files named "files" on uploaded form data
let result_list =[];
console.log(req.body); // Logs form body values
let destinationDir = process.env.COMMON_MYFILE_PATH !== undefined ? process.env.COMMON_MYFILE_PATH : '/opt/wrenchboard/TEST/PROFILE';
const fs = require('fs');
const dir = destinationDir + "/" + req.body.uid;
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
let targetDir = destinationDir + "/" + req.body.uid +'/MYFILES';
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir);
}
req.files.map(( onefile )=>{
{
console.log("onefile========================");
console.log(onefile);
console.log("onefile========================");
//===============================================
let finalTargetFile = targetDir+"/"+onefile.filename;
console.log("targetDir ==> " + targetDir);
console.log("finalTargetFile ==> " + finalTargetFile);
console.log( onefile );
fs.rename(onefile.path, finalTargetFile , function (err) {
if (err) throw err
console.log('Successfully renamed - '+onefile.path);
console.log('Start::Database Registration!');
var data = {
"description": req.body.description,
"file_name": onefile.filename,
"file_size": onefile.size,
"file_type": onefile.mimetype,
"member_id": req.body.member_id,
"saved_file_name": onefile.filename,
"title": req.body.title
};
console.log("DATA - > ", data);
var queryText = 'INSERT INTO members_myfiles (description,file_name,file_size,file_type,member_id,saved_file_name,title) VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING uid';
db.query(queryText, [data.description,data.file_name,data.file_size,data.file_type,data.member_id,data.saved_file_name,data.title], function(dbErr, result) {
if (dbErr) {
console.log("DataError - > ", dbErr.toString());
}else{
console.log("DB Result - > " , result.rows);
result_list = result.rows;
}
console.log('End::Database Registration!');
})
//return res.status(200).send('Completed')
})
//===============================================
}
// 2024-05-23 22:13:28 fieldname: 'files',
// 2024-05-23 22:13:28 originalname: 'ofac sanctions list service - api documentation.docx',
// 2024-05-23 22:13:28 encoding: '7bit',
// 2024-05-23 22:13:28 mimetype: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
// 2024-05-23 22:13:28 destination: '/usr/src/app/videos',
// 2024-05-23 22:13:28 filename: '1716516808509_ofac sanctions list service - api documentation.docx',
// 2024-05-23 22:13:28 path: '/usr/src/app/videos/1716516808509_ofac sanctions list service - api documentation.docx',
// 2024-05-23 22:13:28 size: 243667
// 2024-05-23 22:13:28 }
})
//res.json({ message: "File(s) uploaded successfully" });
return res.status(200).json({'status': 'Completed', 'internal_return': 0, 'result_list': result_list })
//
});
app.post('/upload/resources2', upload.single('file'), (req, res) => {
console.log(req.body)
console.log(req.file)
let uid = req.body.uid;
let job_uid = req.body.job_uid;
console.log(" req.body.uid -> ", uid)
console.log(" req.body.job_uid -> ", job_uid)
console.log(" process.env.COMMON_TASKF_PATH-> ", process.env.COMMON_TASKF_PATH)
let destinationDir = process.env.COMMON_TASKF_PATH !== undefined ? process.env.COMMON_TASKF_PATH : '/opt/wrenchboard/TEST/TASKFILE';
const fs = require('fs');
const dir = destinationDir + "/" + job_uid;
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
const oldPath = req.file.path;
const newPath = dir + "/" + req.file.filename;
var result_list ='';
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!');
console.log('Start::Database Registration!');
var data = {
"member_uid": req.body.uid,
"job_uid": req.body.job_uid,
"filename": req.file.filename,
"originalname": req.file.originalname,
"mimetype": req.file.mimetype,
"size": req.file.size,
"encoding": req.file.encoding
};
console.log("DATA - > ", data);
var queryText = 'INSERT INTO members_jobs_files( member_uid,job_uid,filename,originalname,mimetype,size,encoding ) VALUES($1,$2,$3,$4,$5,$6,$7) RETURNING uid';
db.query(queryText, [data.member_uid,data.job_uid,data.filename,data.originalname,data.mimetype,data.size,data.encoding], function(dbErr, result) {
if (dbErr) {
console.log("DataError - > ", dbErr.toString());
}else{
console.log("DB Result - > " , result.rows);
result_list = result.rows;
}
console.log('End::Database Registration!');
})
return res.status(200).json({'status': 'Completed', 'internal_return': 0, 'result_list': result_list })
//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);
}
});
})
//let myfilesCommonPath = process.env.COMMON_MYFILE_PATH;
app.get('/myfile/:filename', (req, res)=>{
const fileName = req.params.filename;
let findFilename = 'What Is Single Sign-on (SSO) How It Works-(1080p25).mp4';
let memberUID = '';
let myfilesCommonPath = process.env.COMMON_MYFILE_PATH;
console.log("myfilesCommonPath ==> " + myfilesCommonPath);
// var findFilename = '';
//c35c32bc-9ce4-4ca5-9afc-1ecddfd649f5
let Qstring = "SELECT mf.*, m.uid AS member_uid FROM members_myfiles mf LEFT JOIN members m ON m.id=mf.member_id WHERE mf.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].file_name);
console.log("THIS IS RESULT COUNT --> ",result.rowCount);
if ( result.rowCount === 1){
findFilename = result.rows[0].file_name;
memberUID = result.rows[0].member_uid;
}
myfilesCommonPath ="/opt/wrenchboard/TEST/PROFILE";
// $selectedFile = $this->savePath.'PROFILE/'.$out["member_uid"]."/MYFILES/". $out["saved_file_name"];
const completeFile = myfilesCommonPath+"/"+memberUID+"/MYFILES/" + 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.get('/mytask/:filename', (req, res)=>{
const fileName = req.params.filename;
let findFilename = 'What Is Single Sign-on (SSO) How It Works-(1080p25).mp4';
let memberUID = '';
let myfilesCommonPath = process.env.COMMON_MYFILE_PATH;
console.log("myfilesCommonPath ==> " + myfilesCommonPath);
// var findFilename = '';
//c35c32bc-9ce4-4ca5-9afc-1ecddfd649f5
let Qstring = "SELECT mf.*, m.uid AS member_uid FROM members_jobs_files mf LEFT JOIN members m ON m.uid::text=mf.member_uid::text WHERE mf.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;
}
/*
var queryText = 'INSERT INTO members_jobs_files( member_uid,job_uid,filename,originalname,mimetype,size,encoding ) VALUES($1,$2,$3,$4,$5,$6,$7) RETURNING uid';
db.query(queryText, [data.member_uid,data.job_uid,data.filename,data.originalname,data.mimetype,data.size,data.encoding], function(dbErr, result) {
/opt/wrenchboard/TEST/TASKFILE/9d6e00c0-2de8-4099-a617-0c2811d8a738
*/
console.log("THIS IS RESULT --> ",result.rows[0].file_name);
console.log("THIS IS RESULT COUNT --> ",result.rowCount);
if ( result.rowCount === 1){
findFilename = result.rows[0].filename;
jobUID = result.rows[0].job_uid;
}
let destinationDir = process.env.COMMON_TASKF_PATH !== undefined ? process.env.COMMON_TASKF_PATH : '/opt/wrenchboard/TEST/TASKFILE';
// $selectedFile = $this->savePath.'PROFILE/'.$out["member_uid"]."/MYFILES/". $out["saved_file_name"];
const completeFile = destinationDir+"/"+jobUID+"/" + 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')
})