aboutsummaryrefslogtreecommitdiff
path: root/controllers/utilsController.js
diff options
context:
space:
mode:
Diffstat (limited to 'controllers/utilsController.js')
-rw-r--r--controllers/utilsController.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/controllers/utilsController.js b/controllers/utilsController.js
new file mode 100644
index 0000000..86c84b6
--- /dev/null
+++ b/controllers/utilsController.js
@@ -0,0 +1,75 @@
+const path = require('path');
+const config = require('../config.js');
+const fs = require('fs');
+const sharp = require('sharp');
+const ffmpeg = require('fluent-ffmpeg');
+const db = require('knex')(config.database);
+
+const utilsController = {};
+utilsController.imageExtensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png'];
+utilsController.videoExtensions = ['.webm', '.mp4', '.wmv', '.avi', '.mov'];
+
+utilsController.getPrettyDate = function(date) {
+ return date.getFullYear() + '-'
+ + (date.getMonth() + 1) + '-'
+ + date.getDate() + ' '
+ + (date.getHours() < 10 ? '0' : '')
+ + date.getHours() + ':'
+ + (date.getMinutes() < 10 ? '0' : '')
+ + date.getMinutes() + ':'
+ + (date.getSeconds() < 10 ? '0' : '')
+ + date.getSeconds();
+};
+
+utilsController.authorize = async (req, res) => {
+ const token = req.headers.token;
+ if (token === undefined) return res.status(401).json({ success: false, description: 'No token provided' });
+
+ const user = await db.table('users').where('token', token).first();
+ if (!user) return res.status(401).json({ success: false, description: 'Invalid token' });
+ return user;
+};
+
+utilsController.generateThumbs = function(file, basedomain) {
+ if (config.uploads.generateThumbnails !== true) return;
+ const ext = path.extname(file.name).toLowerCase();
+
+ let thumbname = path.join(__dirname, '..', config.uploads.folder, 'thumbs', file.name.slice(0, -ext.length) + '.png');
+ fs.access(thumbname, err => {
+ if (err && err.code === 'ENOENT') {
+ if (utilsController.videoExtensions.includes(ext)) {
+ ffmpeg(path.join(__dirname, '..', config.uploads.folder, file.name))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: path.join(__dirname, '..', config.uploads.folder, 'thumbs'),
+ size: '200x?'
+ })
+ .on('error', error => console.log('Error - ', error.message));
+ } else {
+ let resizeOptions = {
+ width: 200,
+ height: 200,
+ fit: 'contain',
+ background: {
+ r: 0,
+ g: 0,
+ b: 0,
+ alpha: 0
+ }
+ };
+
+ sharp(path.join(__dirname, '..', config.uploads.folder, file.name))
+ .resize(resizeOptions)
+ .toFile(thumbname)
+ .catch((error) => {
+ if (error) {
+ console.log('Error - ', error);
+ }
+ });
+ }
+ }
+ });
+};
+
+module.exports = utilsController;