import {NextFunction, Request, Response} from 'express'; import * as fs from 'fs'; import {PhotoProcessing} from '../../model/fileprocessing/PhotoProcessing'; import {Config} from '../../../common/config/private/Config'; export class PhotoConverterMWs { public static async convertPhoto(req: Request, res: Response, next: NextFunction) { if (!req.resultPipe) { return next(); } // if conversion is not enabled redirect, so browser can cache the full if (Config.Client.Media.Photo.Converting.enabled === false) { return res.redirect(req.originalUrl.slice(0, -1 * '\\bestFit'.length)); } const fullMediaPath = req.resultPipe; const convertedVideo = PhotoProcessing.generateConvertedPath(fullMediaPath, Config.Server.Media.Photo.Converting.resolution); // check if transcoded video exist if (fs.existsSync(convertedVideo) === true) { req.resultPipe = convertedVideo; return next(); } if (Config.Server.Media.Photo.Converting.onTheFly === true) { req.resultPipe = await PhotoProcessing.convertPhoto(fullMediaPath); return next(); } // not converted and won't be now return res.redirect(req.originalUrl.slice(0, -1 * '\\bestFit'.length)); } }