UNPKG

webserv

Version:

a quick, flexible, fully typed development server

58 lines 2.25 kB
var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "busboy", "../../log", "../../util/BufferedResponse"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const busboy_1 = __importDefault(require("busboy")); const log_1 = require("../../log"); const BufferedResponse_1 = __importDefault(require("../../util/BufferedResponse")); function setupBuffer(request) { const busboy = new busboy_1.default({ headers: request.headers }); const buffer = new BufferedResponse_1.default(); busboy.on('file', (fieldName, file, filename, encoding, mimeType) => { log_1.log.info(`Uploaded file: ${filename}, encoding ${encoding}, mimetype: ${mimeType}`); buffer.add({ fieldName, file, filename, encoding, mimeType }); }); busboy.on('finish', function () { buffer.close(); }); request.pipe(busboy); return buffer; } exports.fileProcessor = (request) => { let buffer; if (request.method.toUpperCase() === 'POST') { Object.defineProperty(request, 'files', { get() { if (!buffer) { buffer = setupBuffer(request); } return buffer[Symbol.asyncIterator].bind(buffer); }, configurable: true }); } }; function hasIncomingFiles(request) { return !!(request && Object.prototype.hasOwnProperty.call(request, 'files')); } exports.hasIncomingFiles = hasIncomingFiles; }); //# sourceMappingURL=file.processor.js.map