mirror of
https://github.com/BobbyWibowo/lolisafe.git
synced 2025-01-31 07:11:33 +00:00
added lolisafe upstream compat to /api/album/:id
it will re-map body of /api/album/get/:id into upstream-compatible body. prep for lolisafe albums support for magane plugin. /api/album/:id/:page will stil respond with the old format as that's what the dashboard use and expect. list views of uploads, users and albums in dashboard will now show total items count on the table's top right corner.
This commit is contained in:
parent
1382afd8c8
commit
e85e8e886d
@ -5,6 +5,7 @@ const randomstring = require('randomstring')
|
|||||||
const Zip = require('jszip')
|
const Zip = require('jszip')
|
||||||
const paths = require('./pathsController')
|
const paths = require('./pathsController')
|
||||||
const perms = require('./permissionController')
|
const perms = require('./permissionController')
|
||||||
|
const uploadController = require('./uploadController')
|
||||||
const utils = require('./utilsController')
|
const utils = require('./utilsController')
|
||||||
const config = require('./../config')
|
const config = require('./../config')
|
||||||
const logger = require('./../logger')
|
const logger = require('./../logger')
|
||||||
@ -382,16 +383,8 @@ self.get = async (req, res, next) => {
|
|||||||
})
|
})
|
||||||
.first()
|
.first()
|
||||||
|
|
||||||
if (!album) {
|
if (!album || album.public === 0) {
|
||||||
return res.json({
|
return res.status(404).json({ success: false, description: 'The album could not be found.' })
|
||||||
success: false,
|
|
||||||
description: 'Album not found.'
|
|
||||||
})
|
|
||||||
} else if (album.public === 0) {
|
|
||||||
return res.status(403).json({
|
|
||||||
success: false,
|
|
||||||
description: 'This album is not available for public.'
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const title = album.name
|
const title = album.name
|
||||||
@ -401,17 +394,24 @@ self.get = async (req, res, next) => {
|
|||||||
.orderBy('id', 'desc')
|
.orderBy('id', 'desc')
|
||||||
|
|
||||||
for (const file of files) {
|
for (const file of files) {
|
||||||
|
if (req._upstreamCompat) {
|
||||||
|
file.url = `${config.domain}/${file.name}`
|
||||||
|
} else {
|
||||||
file.file = `${config.domain}/${file.name}`
|
file.file = `${config.domain}/${file.name}`
|
||||||
|
}
|
||||||
|
|
||||||
const extname = utils.extname(file.name)
|
const extname = utils.extname(file.name)
|
||||||
if (utils.mayGenerateThumb(extname)) {
|
if (utils.mayGenerateThumb(extname)) {
|
||||||
file.thumb = `${config.domain}/thumbs/${file.name.slice(0, -extname.length)}.png`
|
file.thumb = `${config.domain}/thumbs/${file.name.slice(0, -extname.length)}.png`
|
||||||
|
if (req._upstreamCompat) file.thumbSquare = file.thumb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.json({
|
return res.json({
|
||||||
success: true,
|
success: true,
|
||||||
|
description: 'Successfully retrieved files.',
|
||||||
title,
|
title,
|
||||||
|
download: Boolean(album.download),
|
||||||
count: files.length,
|
count: files.length,
|
||||||
files
|
files
|
||||||
})
|
})
|
||||||
@ -552,6 +552,42 @@ self.generateZip = async (req, res, next) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.listFiles = async (req, res, next) => {
|
||||||
|
if (req.params.page === undefined) {
|
||||||
|
// Map to /api/album/get, but with lolisafe upstream compatibility, when accessed with this API route
|
||||||
|
req.params.identifier = req.params.id
|
||||||
|
delete req.params.id
|
||||||
|
|
||||||
|
req._upstreamCompat = true
|
||||||
|
res._json = res.json
|
||||||
|
res.json = (body = {}) => {
|
||||||
|
// Rebuild JSON payload to match lolisafe upstream
|
||||||
|
const rebuild = {}
|
||||||
|
const maps = {
|
||||||
|
success: null,
|
||||||
|
description: 'message',
|
||||||
|
title: 'name',
|
||||||
|
download: 'downloadEnabled',
|
||||||
|
count: null
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.keys(body).forEach(key => {
|
||||||
|
if (maps[key] !== undefined) {
|
||||||
|
if (maps[key]) rebuild[maps[key]] = body[key]
|
||||||
|
} else {
|
||||||
|
rebuild[key] = body[key]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (rebuild.message) rebuild.message = rebuild.message.replace(/\.$/, '')
|
||||||
|
return res._json(rebuild)
|
||||||
|
}
|
||||||
|
return self.get(req, res, next)
|
||||||
|
} else {
|
||||||
|
return uploadController.list(req, res, next)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.addFiles = async (req, res, next) => {
|
self.addFiles = async (req, res, next) => {
|
||||||
const user = await utils.authorize(req, res)
|
const user = await utils.authorize(req, res)
|
||||||
if (!user) return
|
if (!user) return
|
||||||
|
@ -33,8 +33,8 @@ routes.post('/upload/finishchunks', (req, res, next) => uploadController.finishC
|
|||||||
routes.post('/upload/:albumid', (req, res, next) => uploadController.upload(req, res, next))
|
routes.post('/upload/:albumid', (req, res, next) => uploadController.upload(req, res, next))
|
||||||
routes.get('/album/get/:identifier', (req, res, next) => albumsController.get(req, res, next))
|
routes.get('/album/get/:identifier', (req, res, next) => albumsController.get(req, res, next))
|
||||||
routes.get('/album/zip/:identifier', (req, res, next) => albumsController.generateZip(req, res, next))
|
routes.get('/album/zip/:identifier', (req, res, next) => albumsController.generateZip(req, res, next))
|
||||||
routes.get('/album/:id', (req, res, next) => uploadController.list(req, res, next))
|
routes.get('/album/:id', (req, res, next) => albumsController.listFiles(req, res, next))
|
||||||
routes.get('/album/:id/:page', (req, res, next) => uploadController.list(req, res, next))
|
routes.get('/album/:id/:page', (req, res, next) => albumsController.listFiles(req, res, next))
|
||||||
routes.get('/albums', (req, res, next) => albumsController.list(req, res, next))
|
routes.get('/albums', (req, res, next) => albumsController.list(req, res, next))
|
||||||
routes.get('/albums/:page', (req, res, next) => albumsController.list(req, res, next))
|
routes.get('/albums/:page', (req, res, next) => albumsController.list(req, res, next))
|
||||||
routes.post('/albums', (req, res, next) => albumsController.create(req, res, next))
|
routes.post('/albums', (req, res, next) => albumsController.create(req, res, next))
|
||||||
|
@ -808,7 +808,7 @@ page.getUploads = (params = {}) => {
|
|||||||
${params.all ? '<th title="Key: ip">IP</th>' : ''}
|
${params.all ? '<th title="Key: ip">IP</th>' : ''}
|
||||||
<th title="Key: timestamp">Upload date</th>
|
<th title="Key: timestamp">Upload date</th>
|
||||||
${hasExpiryDateColumn ? '<th title="Key: expirydate">Expiry date</th>' : ''}
|
${hasExpiryDateColumn ? '<th title="Key: expirydate">Expiry date</th>' : ''}
|
||||||
<th></th>
|
<th class="has-text-right">(${response.data.count} total)</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="table">
|
<tbody id="table">
|
||||||
@ -1748,7 +1748,7 @@ page.getAlbums = (params = {}) => {
|
|||||||
<th>Uploads</th>
|
<th>Uploads</th>
|
||||||
<th>Created at</th>
|
<th>Created at</th>
|
||||||
<th>Public link</th>
|
<th>Public link</th>
|
||||||
<th></th>
|
<th class="has-text-right">(${response.data.count} total)</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="table">
|
<tbody id="table">
|
||||||
@ -2386,7 +2386,7 @@ page.getUsers = (params = {}) => {
|
|||||||
<th title="Key: permission">Group</th>
|
<th title="Key: permission">Group</th>
|
||||||
<th title="Key: registration">Registration date</th>
|
<th title="Key: registration">Registration date</th>
|
||||||
<th title="Key: timestamp">Last token update</th>
|
<th title="Key: timestamp">Last token update</th>
|
||||||
<th></th>
|
<th class="has-text-right">(${response.data.count} total)</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="table">
|
<tbody id="table">
|
||||||
|
Loading…
Reference in New Issue
Block a user