+
+// ---------------------------------------------------------------------------
+
+async function generateReqFilename (
+ file: Express.Multer.File,
+ mimeTypes: { [id: string]: string | string[] },
+ cb: (err: Error, name: string) => void
+) {
+ let extension: string
+ const fileExtension = getLowercaseExtension(file.originalname)
+ const extensionFromMimetype = getExtFromMimetype(mimeTypes, file.mimetype)
+
+ // Take the file extension if we don't understand the mime type
+ if (!extensionFromMimetype) {
+ extension = fileExtension
+ } else {
+ // Take the first available extension for this mimetype
+ extension = extensionFromMimetype
+ }
+
+ let randomString = ''
+
+ try {
+ randomString = await generateRandomString(16)
+ } catch (err) {
+ logger.error('Cannot generate random string for file name.', { err })
+ randomString = 'fake-random-string'
+ }
+
+ cb(null, randomString + extension)
+}