import multer from 'multer';
import path from 'path';

const ALLOWED_EXTENSIONS = ['.exe', '.dmg', '.pkg', '.appimage', '.deb', '.rpm'];

const fileFilter: multer.Options['fileFilter'] = (_req, file, cb) => {
  const ext = path.extname(file.originalname).toLowerCase();
  if (ALLOWED_EXTENSIONS.includes(ext)) {
    cb(null, true);
  } else {
    cb(new Error('Only .exe, .dmg, .pkg, .AppImage, .deb or .rpm installer files are allowed'));
  }
};

const uploadInstaller = multer({
  storage: multer.memoryStorage(),
  fileFilter,
  limits: { fileSize: 500 * 1024 * 1024 },
});

export default uploadInstaller;
