import * as mimeTypes from 'mime-types'; export enum ContentType { TEXT = 'text', AUDIO = 'audio', VIDEO = 'video', IMAGE = 'image', BINARY = 'binary', } export const getContentType = (mimeType?: string, filename?: string) => { let effectiveMimeType: string; if (typeof mimeType !== 'string') { if (typeof filename !== 'string') { return ContentType.BINARY; } const lookupMimeType = mimeTypes.lookup(filename); if (typeof lookupMimeType !== 'string') { return ContentType.BINARY; } effectiveMimeType = lookupMimeType; } else { effectiveMimeType = mimeType; } if ( effectiveMimeType === 'application/json' || effectiveMimeType === 'application/xml' || effectiveMimeType.startsWith('text/') ) { return ContentType.TEXT; } if (effectiveMimeType.startsWith('video/')) { return ContentType.VIDEO; } if (effectiveMimeType.startsWith('audio/')) { return ContentType.AUDIO; } if (effectiveMimeType.startsWith('image/')) { return ContentType.IMAGE; } return ContentType.BINARY; };