Add logs endpoint
[oweals/peertube.git] / server / helpers / image-utils.ts
index ba57b5812c91f7961b736f46efd05db612f6a628..e43ea3f1dad03c62cf65457e40fe461b22c98227 100644 (file)
@@ -1,17 +1,30 @@
 import 'multer'
 import * as sharp from 'sharp'
-import { unlinkPromise } from './core-utils'
+import { readFile, remove } from 'fs-extra'
+import { logger } from './logger'
 
 async function processImage (
-  physicalFile: Express.Multer.File,
+  physicalFile: { path: string },
   destination: string,
   newSize: { width: number, height: number }
 ) {
-  await sharp(physicalFile.path)
+  if (physicalFile.path === destination) {
+    throw new Error('Sharp needs an input path different that the output path.')
+  }
+
+  logger.debug('Processing image %s to %s.', physicalFile.path, destination)
+
+  // Avoid sharp cache
+  const buf = await readFile(physicalFile.path)
+  const sharpInstance = sharp(buf)
+
+  await remove(destination)
+
+  await sharpInstance
     .resize(newSize.width, newSize.height)
     .toFile(destination)
 
-  await unlinkPromise(physicalFile.path)
+  await remove(physicalFile.path)
 }
 
 // ---------------------------------------------------------------------------