aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorZephyrrus <[email protected]>2020-12-24 10:40:50 +0200
committerZephyrrus <[email protected]>2020-12-24 10:40:50 +0200
commit90001c2df56d58e69fd199a518ae7f3e4ed327fc (patch)
treeac601537b5f464a1b03b084e5139e460f42e3473 /src/api
parentchore: update lock files (diff)
downloadhost.fuwn.me-90001c2df56d58e69fd199a518ae7f3e4ed327fc.tar.xz
host.fuwn.me-90001c2df56d58e69fd199a518ae7f3e4ed327fc.zip
chore: remove trailing commas
Diffstat (limited to 'src/api')
-rw-r--r--src/api/database/seeds/initial.js2
-rw-r--r--src/api/databaseMigration.js111
-rw-r--r--src/api/generateThumbs.js2
-rw-r--r--src/api/routes/admin/banIP.js2
-rw-r--r--src/api/routes/admin/fileGET.js2
-rw-r--r--src/api/routes/admin/unBanIP.js2
-rw-r--r--src/api/routes/admin/userDemote.js2
-rw-r--r--src/api/routes/admin/userDisable.js2
-rw-r--r--src/api/routes/admin/userEnable.js2
-rw-r--r--src/api/routes/admin/userGET.js2
-rw-r--r--src/api/routes/admin/userPromote.js2
-rw-r--r--src/api/routes/admin/userPurge.js2
-rw-r--r--src/api/routes/admin/usersGET.js2
-rw-r--r--src/api/routes/albums/albumFullGET.js2
-rw-r--r--src/api/routes/albums/albumGET.js2
-rw-r--r--src/api/routes/albums/albumPOST.js2
-rw-r--r--src/api/routes/albums/albumZipGET.js6
-rw-r--r--src/api/routes/albums/albumsGET.js4
-rw-r--r--src/api/routes/albums/link/linkDELETE.js2
-rw-r--r--src/api/routes/albums/link/linkEditPOST.js2
-rw-r--r--src/api/routes/albums/link/linkPOST.js4
-rw-r--r--src/api/routes/albums/link/linksGET.js2
-rw-r--r--src/api/routes/auth/loginPOST.js6
-rw-r--r--src/api/routes/auth/registerPOST.js2
-rw-r--r--src/api/routes/files/albumAddPOST.js2
-rw-r--r--src/api/routes/files/albumDelPOST.js2
-rw-r--r--src/api/routes/files/fileGET.js2
-rw-r--r--src/api/routes/files/filesAlbumsGET.js2
-rw-r--r--src/api/routes/files/filesGET.js2
-rw-r--r--src/api/routes/files/tagAddBatchPOST.js2
-rw-r--r--src/api/routes/files/tagAddPOST.js2
-rw-r--r--src/api/routes/files/tagDelPOST.js2
-rw-r--r--src/api/routes/search/searchGET.js4
-rw-r--r--src/api/routes/service/configGET.js4
-rw-r--r--src/api/routes/tags/tagPOST.js2
-rw-r--r--src/api/routes/tags/tagsGET.js2
-rw-r--r--src/api/routes/uploads/chunksPOST.js6
-rw-r--r--src/api/routes/uploads/uploadPOST.js16
-rw-r--r--src/api/routes/user/apiKey.js4
-rw-r--r--src/api/routes/user/changePasswordPOST.js2
-rw-r--r--src/api/routes/user/userGET.js4
-rw-r--r--src/api/routes/verifyGET.js4
-rw-r--r--src/api/structures/Route.js4
-rw-r--r--src/api/structures/Server.js6
-rw-r--r--src/api/utils/QueryHelper.js8
-rw-r--r--src/api/utils/ThumbUtil.js8
-rw-r--r--src/api/utils/Util.js18
-rw-r--r--src/api/utils/videoPreview/FragmentPreview.js2
-rw-r--r--src/api/utils/videoPreview/FrameIntervalPreview.js4
49 files changed, 140 insertions, 143 deletions
diff --git a/src/api/database/seeds/initial.js b/src/api/database/seeds/initial.js
index cdbfa80..2383a7b 100644
--- a/src/api/database/seeds/initial.js
+++ b/src/api/database/seeds/initial.js
@@ -15,7 +15,7 @@ exports.seed = async (db) => {
createdAt: now,
editedAt: now,
enabled: true,
- isAdmin: true,
+ isAdmin: true
});
console.log();
console.log('=========================================================');
diff --git a/src/api/databaseMigration.js b/src/api/databaseMigration.js
index 4bd45b7..7e919f3 100644
--- a/src/api/databaseMigration.js
+++ b/src/api/databaseMigration.js
@@ -4,31 +4,71 @@
const nodePath = require('path');
const moment = require('moment');
const jetpack = require('fs-jetpack');
-const { path } = require('fs-jetpack');
const sharp = require('sharp');
const ffmpeg = require('fluent-ffmpeg');
const imageExtensions = ['.jpg', '.jpeg', '.bmp', '.gif', '.png', '.webp'];
const videoExtensions = ['.webm', '.mp4', '.wmv', '.avi', '.mov'];
+const generateThumbnailForImage = async (filename, output) => {
+ try {
+ const file = await jetpack.readAsync(nodePath.join(__dirname, '../../uploads', filename), 'buffer');
+ await sharp(file)
+ .resize(64, 64)
+ .toFormat('webp')
+ .toFile(nodePath.join(__dirname, '../../uploads/thumbs/square', output));
+ await sharp(file)
+ .resize(225, null)
+ .toFormat('webp')
+ .toFile(nodePath.join(__dirname, '../../uploads/thumbs', output));
+ console.log('finished', filename);
+ } catch (error) {
+ console.log('error', filename);
+ }
+};
+
+const generateThumbnailForVideo = (filename) => {
+ try {
+ ffmpeg(nodePath.join(__dirname, '../../uploads', filename))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: nodePath.join(__dirname, '../../uploads/thumbs/square'),
+ size: '64x64'
+ })
+ .on('error', (error) => console.error(error.message));
+ ffmpeg(nodePath.join(__dirname, '../../uploads', filename))
+ .thumbnail({
+ timestamps: [0],
+ filename: '%b.png',
+ folder: nodePath.join(__dirname, '../../uploads/thumbs'),
+ size: '150x?'
+ })
+ .on('error', (error) => console.error(error.message));
+ console.log('finished', filename);
+ } catch (error) {
+ console.log('error', filename);
+ }
+};
+
const oldDb = require('knex')({
client: 'sqlite3',
connection: {
- filename: nodePath.join(__dirname, '..', '..', 'db'),
+ filename: nodePath.join(__dirname, '../../', 'db')
},
- useNullAsDefault: true,
+ useNullAsDefault: true
});
const newDb = require('knex')({
client: 'sqlite3',
connection: {
- filename: nodePath.join(__dirname, '..', '..', 'database.sqlite'),
+ filename: nodePath.join(__dirname, '../../', 'database.sqlite')
},
postProcessResponse: (result) => {
const booleanFields = [
'enabled',
'enableDownload',
- 'isAdmin',
+ 'isAdmin'
];
const processResponse = (row) => {
@@ -45,15 +85,15 @@ const newDb = require('knex')({
if (typeof result === 'object') return processResponse(result);
return result;
},
- useNullAsDefault: true,
+ useNullAsDefault: true
});
const start = async () => {
console.log('Starting migration, this may take a few minutes...'); // Because I half assed it
console.log('Please do NOT kill the process. Wait for it to finish.');
- await jetpack.removeAsync(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'));
- await jetpack.dirAsync(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'));
+ await jetpack.removeAsync(nodePath.join(__dirname, '../../uploads/thumbs'));
+ await jetpack.dirAsync(nodePath.join(__dirname, '../../uploads/thumbs/square'));
console.log('Finished deleting old thumbnails to create new ones');
const users = await oldDb.table('users').where('username', '<>', 'root');
@@ -69,7 +109,7 @@ const start = async () => {
passwordEditedAt: now,
apiKeyEditedAt: now,
createdAt: now,
- editedAt: now,
+ editedAt: now
};
await newDb.table('users').insert(userToInsert);
}
@@ -85,7 +125,7 @@ const start = async () => {
name: album.name,
zippedAt: album.zipGeneratedAt ? moment.unix(album.zipGeneratedAt).toDate() : null,
createdAt: moment.unix(album.timestamp).toDate(),
- editedAt: moment.unix(album.editedAt).toDate(),
+ editedAt: moment.unix(album.editedAt).toDate()
};
const linkToInsert = {
userId: album.userid,
@@ -95,13 +135,13 @@ const start = async () => {
enabled: true,
enableDownload: true,
createdAt: now,
- editedAt: now,
+ editedAt: now
};
await newDb.table('albums').insert(albumToInsert);
const insertedId = await newDb.table('links').insert(linkToInsert);
await newDb.table('albumsLinks').insert({
albumId: album.id,
- linkId: insertedId[0],
+ linkId: insertedId[0]
});
}
console.log('Finished migrating albums...');
@@ -120,16 +160,16 @@ const start = async () => {
hash: file.hash,
ip: file.ip,
createdAt: moment.unix(file.timestamp).toDate(),
- editedAt: moment.unix(file.timestamp).toDate(),
+ editedAt: moment.unix(file.timestamp).toDate()
};
filesToInsert.push(fileToInsert);
albumsFilesToInsert.push({
albumId: file.albumid,
- fileId: file.id,
+ fileId: file.id
});
const filename = file.name;
- if (!jetpack.exists(nodePath.join(__dirname, '..', '..', 'uploads', filename))) continue;
+ if (!jetpack.exists(nodePath.join(__dirname, '../../uploads', filename))) continue;
const ext = nodePath.extname(filename).toLowerCase();
const output = `${filename.slice(0, -ext.length)}.webp`;
if (imageExtensions.includes(ext)) await generateThumbnailForImage(filename, output);
@@ -143,45 +183,4 @@ const start = async () => {
process.exit(0);
};
-const generateThumbnailForImage = async (filename, output) => {
- try {
- const file = await jetpack.readAsync(nodePath.join(__dirname, '..', '..', 'uploads', filename), 'buffer');
- await sharp(file)
- .resize(64, 64)
- .toFormat('webp')
- .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square', output));
- await sharp(file)
- .resize(225, null)
- .toFormat('webp')
- .toFile(nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', output));
- console.log('finished', filename);
- } catch (error) {
- console.log('error', filename);
- }
-};
-
-const generateThumbnailForVideo = filename => {
- try {
- ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
- .thumbnail({
- timestamps: [0],
- filename: '%b.png',
- folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs', 'square'),
- size: '64x64'
- })
- .on('error', error => console.error(error.message));
- ffmpeg(nodePath.join(__dirname, '..', '..', 'uploads', filename))
- .thumbnail({
- timestamps: [0],
- filename: '%b.png',
- folder: nodePath.join(__dirname, '..', '..', 'uploads', 'thumbs'),
- size: '150x?'
- })
- .on('error', error => console.error(error.message));
- console.log('finished', filename);
- } catch (error) {
- console.log('error', filename);
- }
-};
-
start();
diff --git a/src/api/generateThumbs.js b/src/api/generateThumbs.js
index 0377fe7..41d3025 100644
--- a/src/api/generateThumbs.js
+++ b/src/api/generateThumbs.js
@@ -6,7 +6,7 @@ const path = require('path');
const ThumbUtil = require('./utils/ThumbUtil');
const start = async () => {
- const files = fs.readdirSync(path.join(__dirname, '..', '..', process.env.UPLOAD_FOLDER));
+ const files = fs.readdirSync(path.join(__dirname, '../../', process.env.UPLOAD_FOLDER));
for (const fileName of files) {
console.log(`Generating thumb for '${fileName}`);
// eslint-disable-next-line no-await-in-loop
diff --git a/src/api/routes/admin/banIP.js b/src/api/routes/admin/banIP.js
index 4dfe03c..692880d 100644
--- a/src/api/routes/admin/banIP.js
+++ b/src/api/routes/admin/banIP.js
@@ -17,7 +17,7 @@ class banIP extends Route {
}
return res.json({
- message: 'Successfully banned the ip',
+ message: 'Successfully banned the ip'
});
}
}
diff --git a/src/api/routes/admin/fileGET.js b/src/api/routes/admin/fileGET.js
index 7e40659..9605da4 100644
--- a/src/api/routes/admin/fileGET.js
+++ b/src/api/routes/admin/fileGET.js
@@ -24,7 +24,7 @@ class filesGET extends Route {
return res.json({
message: 'Successfully retrieved file',
file,
- user,
+ user
});
}
}
diff --git a/src/api/routes/admin/unBanIP.js b/src/api/routes/admin/unBanIP.js
index 725468c..493834b 100644
--- a/src/api/routes/admin/unBanIP.js
+++ b/src/api/routes/admin/unBanIP.js
@@ -19,7 +19,7 @@ class unBanIP extends Route {
}
return res.json({
- message: 'Successfully unbanned the ip',
+ message: 'Successfully unbanned the ip'
});
}
}
diff --git a/src/api/routes/admin/userDemote.js b/src/api/routes/admin/userDemote.js
index 3f6623d..b430a48 100644
--- a/src/api/routes/admin/userDemote.js
+++ b/src/api/routes/admin/userDemote.js
@@ -20,7 +20,7 @@ class userDemote extends Route {
}
return res.json({
- message: 'Successfully demoted user',
+ message: 'Successfully demoted user'
});
}
}
diff --git a/src/api/routes/admin/userDisable.js b/src/api/routes/admin/userDisable.js
index 029e4af..e39c811 100644
--- a/src/api/routes/admin/userDisable.js
+++ b/src/api/routes/admin/userDisable.js
@@ -20,7 +20,7 @@ class userDisable extends Route {
}
return res.json({
- message: 'Successfully disabled user',
+ message: 'Successfully disabled user'
});
}
}
diff --git a/src/api/routes/admin/userEnable.js b/src/api/routes/admin/userEnable.js
index aca7a0b..cff622f 100644
--- a/src/api/routes/admin/userEnable.js
+++ b/src/api/routes/admin/userEnable.js
@@ -20,7 +20,7 @@ class userEnable extends Route {
}
return res.json({
- message: 'Successfully enabled user',
+ message: 'Successfully enabled user'
});
}
}
diff --git a/src/api/routes/admin/userGET.js b/src/api/routes/admin/userGET.js
index f5f2508..48c6e9b 100644
--- a/src/api/routes/admin/userGET.js
+++ b/src/api/routes/admin/userGET.js
@@ -26,7 +26,7 @@ class usersGET extends Route {
return res.json({
message: 'Successfully retrieved user',
user,
- files,
+ files
});
} catch (error) {
return super.error(res, error);
diff --git a/src/api/routes/admin/userPromote.js b/src/api/routes/admin/userPromote.js
index 3e14cb7..4a5ed88 100644
--- a/src/api/routes/admin/userPromote.js
+++ b/src/api/routes/admin/userPromote.js
@@ -20,7 +20,7 @@ class userPromote extends Route {
}
return res.json({
- message: 'Successfully promoted user',
+ message: 'Successfully promoted user'
});
}
}
diff --git a/src/api/routes/admin/userPurge.js b/src/api/routes/admin/userPurge.js
index 8f61ff9..90f6ec9 100644
--- a/src/api/routes/admin/userPurge.js
+++ b/src/api/routes/admin/userPurge.js
@@ -18,7 +18,7 @@ class userDemote extends Route {
}
return res.json({
- message: 'Successfully deleted the user\'s files',
+ message: 'Successfully deleted the user\'s files'
});
}
}
diff --git a/src/api/routes/admin/usersGET.js b/src/api/routes/admin/usersGET.js
index 4e9b954..52a707f 100644
--- a/src/api/routes/admin/usersGET.js
+++ b/src/api/routes/admin/usersGET.js
@@ -12,7 +12,7 @@ class usersGET extends Route {
return res.json({
message: 'Successfully retrieved users',
- users,
+ users
});
} catch (error) {
return super.error(res, error);
diff --git a/src/api/routes/albums/albumFullGET.js b/src/api/routes/albums/albumFullGET.js
index 2c3a790..d25fe15 100644
--- a/src/api/routes/albums/albumFullGET.js
+++ b/src/api/routes/albums/albumFullGET.js
@@ -50,7 +50,7 @@ class albumGET extends Route {
message: 'Successfully retrieved album',
name: album.name,
files,
- count,
+ count
});
}
}
diff --git a/src/api/routes/albums/albumGET.js b/src/api/routes/albums/albumGET.js
index 81edc95..950a1fd 100644
--- a/src/api/routes/albums/albumGET.js
+++ b/src/api/routes/albums/albumGET.js
@@ -37,7 +37,7 @@ class albumGET extends Route {
message: 'Successfully retrieved files',
name: album.name,
downloadEnabled: link.enableDownload,
- files,
+ files
});
}
}
diff --git a/src/api/routes/albums/albumPOST.js b/src/api/routes/albums/albumPOST.js
index 94ee8a7..52352a1 100644
--- a/src/api/routes/albums/albumPOST.js
+++ b/src/api/routes/albums/albumPOST.js
@@ -25,7 +25,7 @@ class albumPOST extends Route {
name,
userId: user.id,
createdAt: now,
- editedAt: now,
+ editedAt: now
};
const dbRes = await db.table('albums').insert(insertObj);
diff --git a/src/api/routes/albums/albumZipGET.js b/src/api/routes/albums/albumZipGET.js
index bd74ef3..cf1f6f8 100644
--- a/src/api/routes/albums/albumZipGET.js
+++ b/src/api/routes/albums/albumZipGET.js
@@ -21,7 +21,7 @@ class albumGET extends Route {
.where({
identifier,
enabled: true,
- enableDownload: true,
+ enableDownload: true
})
.first();
if (!link) return res.status(400).json({ message: 'The supplied identifier could not be found' });
@@ -38,7 +38,7 @@ class albumGET extends Route {
If the date when the album was zipped is greater than the album's last edit, we just send the zip to the user
*/
if (album.zippedAt > album.editedAt) {
- const filePath = path.join(__dirname, '..', '..', '..', '..', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`);
+ const filePath = path.join(__dirname, '../../../../', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`);
const exists = await jetpack.existsAsync(filePath);
/*
Make sure the file exists just in case, and if not, continue to it's generation.
@@ -76,7 +76,7 @@ class albumGET extends Route {
.where('id', link.albumId)
.update('zippedAt', db.fn.now());
- const filePath = path.join(__dirname, '..', '..', '..', '..', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`);
+ const filePath = path.join(__dirname, '../../../../', process.env.UPLOAD_FOLDER, 'zips', `${album.userId}-${album.id}.zip`);
const fileName = `lolisafe-${identifier}.zip`;
return res.download(filePath, fileName);
} catch (error) {
diff --git a/src/api/routes/albums/albumsGET.js b/src/api/routes/albums/albumsGET.js
index c9ab025..93a23e3 100644
--- a/src/api/routes/albums/albumsGET.js
+++ b/src/api/routes/albums/albumsGET.js
@@ -46,7 +46,7 @@ class albumsGET extends Route {
return res.json({
message: 'Successfully retrieved albums',
- albums,
+ albums
});
}
}
@@ -63,7 +63,7 @@ class albumsDropdownGET extends Route {
.select('id', 'name');
return res.json({
message: 'Successfully retrieved albums',
- albums,
+ albums
});
}
}
diff --git a/src/api/routes/albums/link/linkDELETE.js b/src/api/routes/albums/link/linkDELETE.js
index 0381b50..1af704e 100644
--- a/src/api/routes/albums/link/linkDELETE.js
+++ b/src/api/routes/albums/link/linkDELETE.js
@@ -27,7 +27,7 @@ class linkDELETE extends Route {
}
return res.json({
- message: 'Successfully deleted link',
+ message: 'Successfully deleted link'
});
}
}
diff --git a/src/api/routes/albums/link/linkEditPOST.js b/src/api/routes/albums/link/linkEditPOST.js
index 4e0e0e1..97122a2 100644
--- a/src/api/routes/albums/link/linkEditPOST.js
+++ b/src/api/routes/albums/link/linkEditPOST.js
@@ -22,7 +22,7 @@ class linkEditPOST extends Route {
try {
const updateObj = {
enableDownload: enableDownload || false,
- expiresAt, // This one should be null if not supplied
+ expiresAt // This one should be null if not supplied
};
await db
.table('links')
diff --git a/src/api/routes/albums/link/linkPOST.js b/src/api/routes/albums/link/linkPOST.js
index ba247b5..28e9dfe 100644
--- a/src/api/routes/albums/link/linkPOST.js
+++ b/src/api/routes/albums/link/linkPOST.js
@@ -61,13 +61,13 @@ class linkPOST extends Route {
enabled: true,
enableDownload: true,
expiresAt: null,
- views: 0,
+ views: 0
};
await db.table('links').insert(insertObj);
return res.json({
message: 'The link was created successfully',
- data: insertObj,
+ data: insertObj
});
} catch (error) {
return super.error(res, error);
diff --git a/src/api/routes/albums/link/linksGET.js b/src/api/routes/albums/link/linksGET.js
index 4487c26..edab49a 100644
--- a/src/api/routes/albums/link/linksGET.js
+++ b/src/api/routes/albums/link/linksGET.js
@@ -14,7 +14,7 @@ class linkPOST extends Route {
return res.json({
message: 'Successfully retrieved links',
- links,
+ links
});
}
}
diff --git a/src/api/routes/auth/loginPOST.js b/src/api/routes/auth/loginPOST.js
index 5c7730c..71867f0 100644
--- a/src/api/routes/auth/loginPOST.js
+++ b/src/api/routes/auth/loginPOST.js
@@ -36,7 +36,7 @@ class loginPOST extends Route {
const jwt = JWT.sign({
iss: 'lolisafe',
sub: user.id,
- iat: moment.utc().valueOf(),
+ iat: moment.utc().valueOf()
}, process.env.SECRET, { expiresIn: '30d' });
return res.json({
@@ -45,10 +45,10 @@ class loginPOST extends Route {
id: user.id,
username: user.username,
apiKey: user.apiKey,
- isAdmin: user.isAdmin,
+ isAdmin: user.isAdmin
},
token: jwt,
- apiKey: user.apiKey,
+ apiKey: user.apiKey
});
}
}
diff --git a/src/api/routes/auth/registerPOST.js b/src/api/routes/auth/registerPOST.js
index e2ac018..1cf3630 100644
--- a/src/api/routes/auth/registerPOST.js
+++ b/src/api/routes/auth/registerPOST.js
@@ -50,7 +50,7 @@ class registerPOST extends Route {
createdAt: now,
editedAt: now,
enabled: true,
- isAdmin: false,
+ isAdmin: false
});
return res.json({ message: 'The account was created successfully' });
}
diff --git a/src/api/routes/files/albumAddPOST.js b/src/api/routes/files/albumAddPOST.js
index a88e636..7b8acf7 100644
--- a/src/api/routes/files/albumAddPOST.js
+++ b/src/api/routes/files/albumAddPOST.js
@@ -25,7 +25,7 @@ class albumAddPOST extends Route {
return res.json({
message: 'Successfully added file to album',
- data: { fileId, album: { id: album.id, name: album.name } },
+ data: { fileId, album: { id: album.id, name: album.name } }
});
}
}
diff --git a/src/api/routes/files/albumDelPOST.js b/src/api/routes/files/albumDelPOST.js
index 6e4d576..8304163 100644
--- a/src/api/routes/files/albumDelPOST.js
+++ b/src/api/routes/files/albumDelPOST.js
@@ -26,7 +26,7 @@ class albumDelPOST extends Route {
return res.json({
message: 'Successfully removed file from album',
- data: { fileId, album: { id: album.id, name: album.name } },
+ data: { fileId, album: { id: album.id, name: album.name } }
});
}
}
diff --git a/src/api/routes/files/fileGET.js b/src/api/routes/files/fileGET.js
index 0a6f2de..9ec6f22 100644
--- a/src/api/routes/files/fileGET.js
+++ b/src/api/routes/files/fileGET.js
@@ -38,7 +38,7 @@ class fileGET extends Route {
message: 'Successfully retrieved file',
file,
albums,
- tags,
+ tags
});
}
}
diff --git a/src/api/routes/files/filesAlbumsGET.js b/src/api/routes/files/filesAlbumsGET.js
index f5f2f3b..90aa654 100644
--- a/src/api/routes/files/filesAlbumsGET.js
+++ b/src/api/routes/files/filesAlbumsGET.js
@@ -26,7 +26,7 @@ class filesGET extends Route {
return res.json({
message: 'Successfully retrieved file albums',
- albums,
+ albums
});
}
}
diff --git a/src/api/routes/files/filesGET.js b/src/api/routes/files/filesGET.js
index ce1d788..9e90633 100644
--- a/src/api/routes/files/filesGET.js
+++ b/src/api/routes/files/filesGET.js
@@ -36,7 +36,7 @@ class filesGET extends Route {
return res.json({
message: 'Successfully retrieved files',
files,
- count,
+ count
});
}
}
diff --git a/src/api/routes/files/tagAddBatchPOST.js b/src/api/routes/files/tagAddBatchPOST.js
index 5091a81..679945d 100644
--- a/src/api/routes/files/tagAddBatchPOST.js
+++ b/src/api/routes/files/tagAddBatchPOST.js
@@ -31,7 +31,7 @@ class tagAddBatchPOST extends Route {
return res.json({
message: 'Successfully added tags to file',
data: { fileId, tags: addedTags },
- errors,
+ errors
});
// eslint-disable-next-line consistent-return
}
diff --git a/src/api/routes/files/tagAddPOST.js b/src/api/routes/files/tagAddPOST.js
index 654dceb..2bbfa07 100644
--- a/src/api/routes/files/tagAddPOST.js
+++ b/src/api/routes/files/tagAddPOST.js
@@ -27,7 +27,7 @@ class tagAddPOST extends Route {
return res.json({
message: 'Successfully added tag to file',
- data: { fileId, tag },
+ data: { fileId, tag }
});
// eslint-disable-next-line consistent-return
}
diff --git a/src/api/routes/files/tagDelPOST.js b/src/api/routes/files/tagDelPOST.js
index 4d45493..ac0bfe4 100644
--- a/src/api/routes/files/tagDelPOST.js
+++ b/src/api/routes/files/tagDelPOST.js
@@ -29,7 +29,7 @@ class tagDelPost extends Route {
return res.json({
message: 'Successfully removed tag from file',
- data: { fileId, tag },
+ data: { fileId, tag }
});
// eslint-disable-next-line consistent-return
}
diff --git a/src/api/routes/search/searchGET.js b/src/api/routes/search/searchGET.js
index b8757fa..40107d8 100644
--- a/src/api/routes/search/searchGET.js
+++ b/src/api/routes/search/searchGET.js
@@ -9,7 +9,7 @@ const options = {
keywords: ['album', 'tag', 'before', 'after', 'file'],
offsets: false,
alwaysArray: true,
- tokenize: true,
+ tokenize: true
};
class configGET extends Route {
@@ -55,7 +55,7 @@ class configGET extends Route {
query,
parsed,
files,
- count,
+ count
});
}
}
diff --git a/src/api/routes/service/configGET.js b/src/api/routes/service/configGET.js
index 3c6a2f8..bc91a7e 100644
--- a/src/api/routes/service/configGET.js
+++ b/src/api/routes/service/configGET.js
@@ -18,8 +18,8 @@ class configGET extends Route {
generateThumbnails: process.env.GENERATE_THUMBNAILS === 'true',
generateZips: process.env.GENERATE_ZIPS === 'true',
publicMode: process.env.PUBLIC_MODE === 'true',
- enableAccounts: process.env.USER_ACCOUNTS === 'true',
- },
+ enableAccounts: process.env.USER_ACCOUNTS === 'true'
+ }
});
}
}
diff --git a/src/api/routes/tags/tagPOST.js b/src/api/routes/tags/tagPOST.js
index 5038b91..89b296d 100644
--- a/src/api/routes/tags/tagPOST.js
+++ b/src/api/routes/tags/tagPOST.js
@@ -22,7 +22,7 @@ class tagPOST extends Route {
name,
userId: user.id,
createdAt: now,
- editedAt: now,
+ editedAt: now
};
const dbRes = await db.table('tags').insert(insertObj);
diff --git a/src/api/routes/tags/tagsGET.js b/src/api/routes/tags/tagsGET.js
index 848e08d..329d789 100644
--- a/src/api/routes/tags/tagsGET.js
+++ b/src/api/routes/tags/tagsGET.js
@@ -19,7 +19,7 @@ class tagsGET extends Route {
return res.json({
message: 'Successfully retrieved tags',
- tags,
+ tags
});
} catch (error) {
return super.error(res, error);
diff --git a/src/api/routes/uploads/chunksPOST.js b/src/api/routes/uploads/chunksPOST.js
index 789a5e7..061cfb0 100644
--- a/src/api/routes/uploads/chunksPOST.js
+++ b/src/api/routes/uploads/chunksPOST.js
@@ -8,7 +8,7 @@ class uploadPOST extends Route {
constructor() {
super('/upload/chunks', 'post', {
bypassAuth: true,
- canApiKey: true,
+ canApiKey: true
});
}
@@ -17,7 +17,7 @@ class uploadPOST extends Route {
// console.log('Files', req.body.files);
const info = {
size: req.body.files[0].size,
- url: `${process.env.DOMAIN}/`,
+ url: `${process.env.DOMAIN}/`
};
for (const chunk of req.body.files) {
@@ -56,7 +56,7 @@ class uploadPOST extends Route {
return res.status(201).send({
message: 'Sucessfully merged the chunk(s).',
- ...info,
+ ...info
/*
name: `${filename}${ext || ''}`,
size: exists.size,
diff --git a/src/api/routes/uploads/uploadPOST.js b/src/api/routes/uploads/uploadPOST.js
index 3e67293..567862a 100644
--- a/src/api/routes/uploads/uploadPOST.js
+++ b/src/api/routes/uploads/uploadPOST.js
@@ -9,7 +9,7 @@ const upload = multer({
storage: multer.memoryStorage(),
limits: {
fileSize: parseInt(process.env.MAX_SIZE, 10) * (1000 * 1000),
- files: 1,
+ files: 1
},
fileFilter: (req, file, cb) =>
// TODO: Enable blacklisting of files/extensions
@@ -21,7 +21,7 @@ const upload = multer({
}
*/
cb(null, true)
- ,
+
}).array('files[]');
/*
@@ -41,7 +41,7 @@ class uploadPOST extends Route {
constructor() {
super('/upload', 'post', {
bypassAuth: true,
- canApiKey: true,
+ canApiKey: true
});
}
@@ -100,7 +100,7 @@ class uploadPOST extends Route {
name: filename,
hash,
size: file.buffer.length,
- url: filename,
+ url: filename
};
}
@@ -120,7 +120,7 @@ class uploadPOST extends Route {
uploadedFile = Util.constructFilePublicLink(uploadedFile);
return res.status(201).send({
message: 'Sucessfully uploaded the file.',
- ...uploadedFile,
+ ...uploadedFile
});
});
}
@@ -134,7 +134,7 @@ class uploadPOST extends Route {
size: exists.size,
url: `${process.env.DOMAIN}/${exists.name}`,
deleteUrl: `${process.env.DOMAIN}/api/file/${exists.id}`,
- repeated: true,
+ repeated: true
});
return Util.deleteFile(filename);
@@ -183,7 +183,7 @@ class uploadPOST extends Route {
hash: file.hash,
ip: req.ip,
createdAt: now,
- editedAt: now,
+ editedAt: now
});
} else {
insertedId = await db.table('files').insert({
@@ -195,7 +195,7 @@ class uploadPOST extends Route {
hash: file.hash,
ip: req.ip,
createdAt: now,
- editedAt: now,
+ editedAt: now
}, 'id');
}
return insertedId;
diff --git a/src/api/routes/user/apiKey.js b/src/api/routes/user/apiKey.js
index a63f0c0..653c56a 100644
--- a/src/api/routes/user/apiKey.js
+++ b/src/api/routes/user/apiKey.js
@@ -17,7 +17,7 @@ class apiKeyPOST extends Route {
.where({ id: user.id })
.update({
apiKey,
- apiKeyEditedAt: now,
+ apiKeyEditedAt: now
});
} catch (error) {
dump(error);
@@ -26,7 +26,7 @@ class apiKeyPOST extends Route {
return res.json({
message: 'Successfully created new api key',
- apiKey,
+ apiKey
});
}
}
diff --git a/src/api/routes/user/changePasswordPOST.js b/src/api/routes/user/changePasswordPOST.js
index 1b3a27a..82bce40 100644
--- a/src/api/routes/user/changePasswordPOST.js
+++ b/src/api/routes/user/changePasswordPOST.js
@@ -36,7 +36,7 @@ class changePasswordPOST extends Route {
const now = moment.utc().toDate();
await db.table('users').where('id', user.id).update({
password: hash,
- passwordEditedAt: now,
+ passwordEditedAt: now
});
return res.json({ message: 'The password was changed successfully' });
diff --git a/src/api/routes/user/userGET.js b/src/api/routes/user/userGET.js
index 6f179a9..7929aac 100644
--- a/src/api/routes/user/userGET.js
+++ b/src/api/routes/user/userGET.js
@@ -12,8 +12,8 @@ class usersGET extends Route {
id: user.id,
username: user.username,
isAdmin: user.isAdmin,
- apiKey: user.apiKey,
- },
+ apiKey: user.apiKey
+ }
});
}
}
diff --git a/src/api/routes/verifyGET.js b/src/api/routes/verifyGET.js
index 107c20a..2f370e8 100644
--- a/src/api/routes/verifyGET.js
+++ b/src/api/routes/verifyGET.js
@@ -11,8 +11,8 @@ class verifyGET extends Route {
user: {
id: user.id,
username: user.username,
- isAdmin: user.isAdmin,
- },
+ isAdmin: user.isAdmin
+ }
});
}
}
diff --git a/src/api/structures/Route.js b/src/api/structures/Route.js
index 6be0dc7..74589c5 100644
--- a/src/api/structures/Route.js
+++ b/src/api/structures/Route.js
@@ -7,7 +7,7 @@ const db = require('knex')({
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
- filename: nodePath.join(__dirname, '../../../database.sqlite'),
+ filename: nodePath.join(__dirname, '../../../database.sqlite')
},
postProcessResponse: (result) => {
/*
@@ -32,7 +32,7 @@ const db = require('knex')({
if (typeof result === 'object') return processResponse(result);
return result;
},
- useNullAsDefault: process.env.DB_CLIENT === 'sqlite3',
+ useNullAsDefault: process.env.DB_CLIENT === 'sqlite3'
});
const moment = require('moment');
const log = require('../utils/Log');
diff --git a/src/api/structures/Server.js b/src/api/structures/Server.js
index e25e089..83b2880 100644
--- a/src/api/structures/Server.js
+++ b/src/api/structures/Server.js
@@ -15,7 +15,7 @@ const ThumbUtil = require('../utils/ThumbUtil');
const rateLimiter = new RateLimit({
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW, 10),
max: parseInt(process.env.RATE_LIMIT_MAX, 10),
- delayMs: 0,
+ delayMs: 0
});
class Server {
@@ -52,8 +52,8 @@ class Server {
return false;
},
'stream': {
- write(str) { log.debug(str); },
- },
+ write(str) { log.debug(str); }
+ }
}));
}
// this.server.use(rateLimiter);
diff --git a/src/api/utils/QueryHelper.js b/src/api/utils/QueryHelper.js
index c9fe8c6..7fabd06 100644
--- a/src/api/utils/QueryHelper.js
+++ b/src/api/utils/QueryHelper.js
@@ -4,7 +4,7 @@ class QueryHelper {
static parsers = {
before: (val) => QueryHelper.parseChronoList(val),
after: (val) => QueryHelper.parseChronoList(val),
- tag: (val) => QueryHelper.sanitizeTags(val),
+ tag: (val) => QueryHelper.sanitizeTags(val)
};
static requirementHandlers = {
@@ -13,14 +13,14 @@ class QueryHelper {
.join('albums', 'albumsFiles.albumId', '=', 'album.id'),
tag: (knex) => knex
.join('fileTags', 'files.id', '=', 'fileTags.fileId')
- .join('tags', 'fileTags.tagId', '=', 'tags.id'),
+ .join('tags', 'fileTags.tagId', '=', 'tags.id')
}
static fieldToSQLMapping = {
album: 'albums.name',
tag: 'tags.name',
before: 'files.createdAt',
- after: 'files.createdAt',
+ after: 'files.createdAt'
}
static handlers = {
@@ -53,7 +53,7 @@ class QueryHelper {
}
}
return knex;
- },
+ }
}
static verify(field, list) {
diff --git a/src/api/utils/ThumbUtil.js b/src/api/utils/ThumbUtil.js
index 6a22c3b..2f7d75a 100644
--- a/src/api/utils/ThumbUtil.js
+++ b/src/api/utils/ThumbUtil.js
@@ -51,7 +51,7 @@ class ThumbUtil {
timestamps: [0],
filename: '%b.png',
folder: ThumbUtil.squareThumbPath,
- size: '64x64',
+ size: '64x64'
})
.on('error', (error) => log.error(error.message));
@@ -60,7 +60,7 @@ class ThumbUtil {
timestamps: [0],
filename: '%b.png',
folder: ThumbUtil.thumbPath,
- size: '150x?',
+ size: '150x?'
})
.on('error', (error) => log.error(error.message));
@@ -69,7 +69,7 @@ class ThumbUtil {
input: filePath,
width: 150,
output: path.join(ThumbUtil.videoPreviewPath, output),
- log: log.debug,
+ log: log.debug
});
} catch (e) {
log.error(e);
@@ -87,7 +87,7 @@ class ThumbUtil {
if (isVideo) {
return {
thumb: `${filename.slice(0, -ext.length)}.png`,
- preview: `${filename.slice(0, -ext.length)}.webm`,
+ preview: `${filename.slice(0, -ext.length)}.webm`
};
}
diff --git a/src/api/utils/Util.js b/src/api/utils/Util.js
index ee4c748..4279b6f 100644
--- a/src/api/utils/Util.js
+++ b/src/api/utils/Util.js
@@ -10,9 +10,9 @@ const db = require('knex')({
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
- filename: path.join(__dirname, '../../../database.sqlite'),
+ filename: path.join(__dirname, '../../../database.sqlite')
},
- useNullAsDefault: process.env.DB_CLIENT === 'sqlite',
+ useNullAsDefault: process.env.DB_CLIENT === 'sqlite'
});
const moment = require('moment');
const crypto = require('crypto');
@@ -25,7 +25,7 @@ const ThumbUtil = require('./ThumbUtil');
const blockedExtensions = process.env.BLOCKED_EXTENSIONS.split(',');
class Util {
- static uploadPath = path.join(__dirname, '..', '..', '..', process.env.UPLOAD_FOLDER);
+ static uploadPath = path.join(__dirname, '../../../', process.env.UPLOAD_FOLDER);
static uuid() {
return uuidv4();
@@ -54,7 +54,7 @@ class Util {
const retry = (i = 0) => {
const filename = randomstring.generate({
length: parseInt(process.env.GENERATED_FILENAME_LENGTH, 10),
- capitalization: 'lowercase',
+ capitalization: 'lowercase'
}) + path.extname(name).toLowerCase();
// TODO: Change this to look for the file in the db instead of in the filesystem
@@ -71,7 +71,7 @@ class Util {
const retry = async (i = 0) => {
const identifier = randomstring.generate({
length: parseInt(process.env.GENERATED_ALBUM_LENGTH, 10),
- capitalization: 'lowercase',
+ capitalization: 'lowercase'
});
const exists = await db
.table('links')
@@ -214,13 +214,11 @@ class Util {
zip.writeZip(
path.join(
__dirname,
- '..',
- '..',
- '..',
+ '../../../',
process.env.UPLOAD_FOLDER,
'zips',
- `${album.userId}-${album.id}.zip`,
- ),
+ `${album.userId}-${album.id}.zip`
+ )
);
} catch (error) {
log.error(error);
diff --git a/src/api/utils/videoPreview/FragmentPreview.js b/src/api/utils/videoPreview/FragmentPreview.js
index bf623c1..4f681fa 100644
--- a/src/api/utils/videoPreview/FragmentPreview.js
+++ b/src/api/utils/videoPreview/FragmentPreview.js
@@ -38,7 +38,7 @@ module.exports = async (opts) => {
fragmentDurationSecond = 3,
ignoreBeforePercent = 0.25,
- ignoreAfterPercent = 0.75,
+ ignoreAfterPercent = 0.75
} = opts;
const info = await probe(input);
diff --git a/src/api/utils/videoPreview/FrameIntervalPreview.js b/src/api/utils/videoPreview/FrameIntervalPreview.js
index 8c5f1c3..8bb9836 100644
--- a/src/api/utils/videoPreview/FrameIntervalPreview.js
+++ b/src/api/utils/videoPreview/FrameIntervalPreview.js
@@ -16,7 +16,7 @@ module.exports = async (opts) => {
output,
numFrames,
- numFramesPercent = 0.05,
+ numFramesPercent = 0.05
} = opts;
const info = await probe(input);
@@ -32,7 +32,7 @@ module.exports = async (opts) => {
const result = {
output,
- numFrames: numFramesToCapture,
+ numFrames: numFramesToCapture
};
await new Promise((resolve, reject) => {