total_1ère
This commit is contained in:
127
controllers/vente_video/generate_linkController copie.js
Normal file
127
controllers/vente_video/generate_linkController copie.js
Normal file
@@ -0,0 +1,127 @@
|
||||
/////////////////////////////////////////////////
|
||||
// LOGGING
|
||||
/////////////////////////////////////////////////
|
||||
const logger = require("../../public/js/app/logger_lienventetemp");
|
||||
/////////////////////////////////////////////////
|
||||
// APPELS DES MODULES
|
||||
/////////////////////////////////////////////////
|
||||
const moment = require('moment');
|
||||
const ejs = require('ejs');
|
||||
const nodemailer = require('nodemailer');
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const mysql = require('mysql2');
|
||||
const mysql_promise = require('mysql2/promise');
|
||||
////////////////////////////////////////////////////
|
||||
// FILE NAME
|
||||
////////////////////////////////////////////////////
|
||||
const filename = path.parse(__filename).base;
|
||||
|
||||
// Configuration de la connexion à la base de données
|
||||
const dbConfig = {
|
||||
host: process.env.db_connection_host,
|
||||
port: process.env.db_connection_port,
|
||||
user: process.env.db_connection_user,
|
||||
password: process.env.db_connection_password,
|
||||
database: process.env.db_connection_database
|
||||
};
|
||||
|
||||
|
||||
// Stockage des fichiers avec une date d'expiration
|
||||
const fileLinks = {};
|
||||
|
||||
// DATE
|
||||
moment.locale('fr');
|
||||
var date_formattee = moment().format('L')
|
||||
var today = date_formattee;
|
||||
|
||||
const generate_link = async function(req, res) {
|
||||
|
||||
try {
|
||||
// CONNEXION A LA BD
|
||||
const db_connection_promise = await mysql_promise.createConnection(dbConfig);
|
||||
|
||||
const linkId = Date.now();
|
||||
const filePath = path.join(__dirname, 'files', 'film_suzuki_unesco_2024.mp4'); // Chemin du fichier
|
||||
let expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000); // 24 heures à partir de maintenant
|
||||
// Format de la date pour MySQL
|
||||
expiresAt = expiresAt.toISOString().slice(0, 19).replace('T', ' '); // 'YYYY-MM-DD HH:MM:SS'
|
||||
const link = `${process.env.DOMAIN_EXTERNE}boutique/unesco/download/${linkId}`;
|
||||
//const linkId = Date.now(); // Un identifiant unique basé sur le timestamp
|
||||
//fileLinks[linkId] = {
|
||||
// filePath: filePath,
|
||||
// expiresAt: Date.now() + 24 * 60 * 60 * 1000 // 24 heures
|
||||
//};
|
||||
|
||||
sql = 'INSERT INTO TemporaryLinks (id, link, filePath, expiresAt) VALUES ('+ linkId +', "'+ link +'", "'+ filePath +'", "'+ expiresAt +'")';
|
||||
console.log("sql : ", sql);
|
||||
const [results, fields] = await db_connection_promise.execute(sql);
|
||||
|
||||
// L'ID généré par MySQL est accessible ici
|
||||
console.log("results.affectedRows : ", results.affectedRows);
|
||||
|
||||
|
||||
console.log("link : ", link);
|
||||
return link;
|
||||
} catch (error) {
|
||||
// Echec de connection à la BD
|
||||
logger.error("Il y a un problème avec la connection à la base de données! : " + error, { numsession: req.session.id });
|
||||
await db_connection_promise.end();
|
||||
return error;
|
||||
//return res.status(403).send('Il y a un problème avec la connection à la base de données!');
|
||||
}
|
||||
}
|
||||
|
||||
const download_file = async function(req, res) {
|
||||
const linkId = req.params.id;
|
||||
//const fileData = fileLinks[linkId];
|
||||
console.log("linkId : ",linkId);
|
||||
|
||||
|
||||
try {
|
||||
// CONNEXION A LA BD
|
||||
const db_connection_promise = await mysql_promise.createConnection(dbConfig);
|
||||
const [rows] = await db_connection_promise.execute(
|
||||
'SELECT filePath, expiresAt FROM TemporaryLinks WHERE id = ?',
|
||||
[linkId]
|
||||
);
|
||||
console.log("rows.length : ",rows.length);
|
||||
|
||||
if (rows.length > 0) {
|
||||
console.log("rows.expiresAt : ",rows[0].expiresAt);
|
||||
console.log("today : ",today);
|
||||
console.log("Date.now() : ",Date.now());
|
||||
const expiresAt = new Date(rows[0].expiresAt);
|
||||
console.log("expiresAt : ",expiresAt);
|
||||
console.log("expiresAt.getTime() : ",expiresAt.getTime());
|
||||
if (Date.now() < expiresAt.getTime()) {
|
||||
req.session.filePath = rows[0].filePath;
|
||||
req.session.expiresAt = rows[0].expiresAt;
|
||||
res.download(rows[0].filePath, (err) => {
|
||||
if (err) {
|
||||
res.status(404).send('File not found');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
res.status(403).send('Link has expired');
|
||||
}
|
||||
|
||||
} else {
|
||||
res.status(403).send('Link does not exist');
|
||||
}
|
||||
} catch (error) {
|
||||
// Echec de connection à la BD
|
||||
logger.error("Il y a un problème avec la connection à la base de données! : " + error, { numsession: req.session.id });
|
||||
await db_connection_promise.end();
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
// EXPORT DE MODULE POUR QU'IL SOIT LU DANS LES AUTRES FICHIERS JS
|
||||
/////////////////////////////////////////////////
|
||||
module.exports = {
|
||||
generate_link,
|
||||
download_file
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user