mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 09:09:36 +02:00
Bring back deleteFile removed upstream
This commit is contained in:
@@ -10,6 +10,7 @@ export default {
|
|||||||
getFile,
|
getFile,
|
||||||
getFileHead,
|
getFileHead,
|
||||||
insertFile,
|
insertFile,
|
||||||
|
deleteFile,
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFile(req, res, next) {
|
function getFile(req, res, next) {
|
||||||
@@ -93,6 +94,22 @@ function getFile(req, res, next) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function deleteFile(req, res, next) {
|
||||||
|
metrics.inc('deleteFile')
|
||||||
|
const { key, bucket } = req
|
||||||
|
|
||||||
|
req.requestLogger.addFields({ key, bucket })
|
||||||
|
req.requestLogger.setMessage('deleting file')
|
||||||
|
|
||||||
|
FileHandler.deleteFile(bucket, key, function (err) {
|
||||||
|
if (err) {
|
||||||
|
next(err)
|
||||||
|
} else {
|
||||||
|
res.sendStatus(204)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function getFileHead(req, res, next) {
|
function getFileHead(req, res, next) {
|
||||||
const { key, bucket } = req
|
const { key, bucket } = req
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const { ConversionError, InvalidParametersError } = Errors
|
|||||||
|
|
||||||
const FileHandler = {
|
const FileHandler = {
|
||||||
insertFile: callbackify(insertFile),
|
insertFile: callbackify(insertFile),
|
||||||
|
deleteFile: callbackify(deleteFile),
|
||||||
getFile: callbackify(getFile),
|
getFile: callbackify(getFile),
|
||||||
getRedirectUrl: callbackify(getRedirectUrl),
|
getRedirectUrl: callbackify(getRedirectUrl),
|
||||||
getFileSize: callbackify(getFileSize),
|
getFileSize: callbackify(getFileSize),
|
||||||
@@ -20,6 +21,7 @@ const FileHandler = {
|
|||||||
getFile,
|
getFile,
|
||||||
getRedirectUrl,
|
getRedirectUrl,
|
||||||
insertFile,
|
insertFile,
|
||||||
|
deleteFile,
|
||||||
getFileSize,
|
getFileSize,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -46,6 +48,25 @@ async function insertFile(bucket, key, stream) {
|
|||||||
await PersistorManager.sendStream(bucket, key, stream)
|
await PersistorManager.sendStream(bucket, key, stream)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function deleteFile(bucket, key) {
|
||||||
|
const convertedKey = KeyBuilder.getConvertedFolderKey(key)
|
||||||
|
if (!convertedKey.match(/^[0-9a-f]{24}\/([0-9a-f]{24}|v\/[0-9]+\/[a-z]+)/i)) {
|
||||||
|
throw new InvalidParametersError('key does not match validation regex', {
|
||||||
|
bucket,
|
||||||
|
key,
|
||||||
|
convertedKey,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const jobs = [PersistorManager.deleteObject(bucket, key)]
|
||||||
|
if (
|
||||||
|
Settings.enableConversions &&
|
||||||
|
bucket === Settings.filestore.stores.template_files
|
||||||
|
) {
|
||||||
|
jobs.push(PersistorManager.deleteDirectory(bucket, convertedKey))
|
||||||
|
}
|
||||||
|
await Promise.all(jobs)
|
||||||
|
}
|
||||||
|
|
||||||
async function getFile(bucket, key, opts) {
|
async function getFile(bucket, key, opts) {
|
||||||
opts = opts || {}
|
opts = opts || {}
|
||||||
if (!opts.format && !opts.style) {
|
if (!opts.format && !opts.style) {
|
||||||
|
|||||||
Reference in New Issue
Block a user