mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const path = require('path');
 | 
						|
const processMultipart = require('./processMultipart');
 | 
						|
const isEligibleRequest = require('./isEligibleRequest');
 | 
						|
const { buildOptions, debugLog } = require('./utilities');
 | 
						|
const busboy = require('../busboy'); // eslint-disable-line no-unused-vars
 | 
						|
 | 
						|
const DEFAULT_OPTIONS = {
 | 
						|
  debug: false,
 | 
						|
  uploadTimeout: 60000,
 | 
						|
  fileHandler: false,
 | 
						|
  uriDecodeFileNames: false,
 | 
						|
  safeFileNames: false,
 | 
						|
  preserveExtension: false,
 | 
						|
  abortOnLimit: false,
 | 
						|
  responseOnLimit: 'File size limit has been reached',
 | 
						|
  limitHandler: false,
 | 
						|
  createParentPath: false,
 | 
						|
  parseNested: false,
 | 
						|
  useTempFiles: false,
 | 
						|
  tempFileDir: path.join(process.cwd(), 'tmp')
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Expose the file upload middleware
 | 
						|
 * @param {DEFAULT_OPTIONS & busboy.BusboyConfig} options - Middleware options.
 | 
						|
 * @returns {Function} - express-fileupload middleware.
 | 
						|
 */
 | 
						|
module.exports = (options) => {
 | 
						|
  const uploadOptions = buildOptions(DEFAULT_OPTIONS, options);
 | 
						|
  return (req, res, next) => {
 | 
						|
    if (!isEligibleRequest(req)) {
 | 
						|
      debugLog(uploadOptions, 'Request is not eligible for file upload!');
 | 
						|
      return next();
 | 
						|
    }
 | 
						|
    processMultipart(uploadOptions, req, res, next);
 | 
						|
  };
 | 
						|
};
 |