|
@@ -5,7 +5,7 @@ const LocalFileWriter = require('./LocalFileWriter')
|
|
|
const FileConverter = require('./FileConverter')
|
|
const FileConverter = require('./FileConverter')
|
|
|
const KeyBuilder = require('./KeyBuilder')
|
|
const KeyBuilder = require('./KeyBuilder')
|
|
|
const ImageOptimiser = require('./ImageOptimiser')
|
|
const ImageOptimiser = require('./ImageOptimiser')
|
|
|
-const { ConversionError } = require('./Errors')
|
|
|
|
|
|
|
+const { ConversionError, WriteError } = require('./Errors')
|
|
|
|
|
|
|
|
module.exports = {
|
|
module.exports = {
|
|
|
insertFile: callbackify(insertFile),
|
|
insertFile: callbackify(insertFile),
|
|
@@ -24,12 +24,24 @@ module.exports = {
|
|
|
|
|
|
|
|
async function insertFile(bucket, key, stream) {
|
|
async function insertFile(bucket, key, stream) {
|
|
|
const convertedKey = KeyBuilder.getConvertedFolderKey(key)
|
|
const convertedKey = KeyBuilder.getConvertedFolderKey(key)
|
|
|
|
|
+ if (!convertedKey.match(/^[0-9a-f]{24}\/[0-9a-f]{24}/i)) {
|
|
|
|
|
+ throw new WriteError({
|
|
|
|
|
+ message: 'key does not match validation regex',
|
|
|
|
|
+ info: { bucket, key, convertedKey }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
await PersistorManager.promises.deleteDirectory(bucket, convertedKey)
|
|
await PersistorManager.promises.deleteDirectory(bucket, convertedKey)
|
|
|
await PersistorManager.promises.sendStream(bucket, key, stream)
|
|
await PersistorManager.promises.sendStream(bucket, key, stream)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function deleteFile(bucket, key) {
|
|
async function deleteFile(bucket, key) {
|
|
|
const convertedKey = KeyBuilder.getConvertedFolderKey(key)
|
|
const convertedKey = KeyBuilder.getConvertedFolderKey(key)
|
|
|
|
|
+ if (!convertedKey.match(/^[0-9a-f]{24}\/[0-9a-f]{24}/i)) {
|
|
|
|
|
+ throw new WriteError({
|
|
|
|
|
+ message: 'key does not match validation regex',
|
|
|
|
|
+ info: { bucket, key, convertedKey }
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
await Promise.all([
|
|
await Promise.all([
|
|
|
PersistorManager.promises.deleteFile(bucket, key),
|
|
PersistorManager.promises.deleteFile(bucket, key),
|
|
|
PersistorManager.promises.deleteDirectory(bucket, convertedKey)
|
|
PersistorManager.promises.deleteDirectory(bucket, convertedKey)
|