UNPKG

webserv

Version:

a quick, flexible, fully typed development server

73 lines 3.17 kB
(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", "path", "../guards/method", "../guards/path", "../middleware/saveFiles", "../middleware/serve", "../middleware/serveFile", "../processors/before/file.processor", "../transforms/directory.transform", "../util/htmlTemplate"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = require("path"); const method_1 = require("../guards/method"); const path_2 = require("../guards/path"); const saveFiles_1 = require("../middleware/saveFiles"); const serve_1 = require("../middleware/serve"); const serveFile_1 = require("../middleware/serveFile"); const file_processor_1 = require("../processors/before/file.processor"); const directory_transform_1 = require("../transforms/directory.transform"); const htmlTemplate_1 = require("../util/htmlTemplate"); function uploadService(props) { const { route = '*', directory } = props; return { route: { guards: [path_2.pathGuard({ match: route })], middleware: [ { before: [file_processor_1.fileProcessor], guards: [method_1.method.post()], middleware: saveFiles_1.saveFiles(props), transforms: [exports.fileUploadTransform] }, { guards: [method_1.method.get('list')], middleware: serve_1.serve({ basePath: directory }), transforms: [directory_transform_1.directoryTransform] }, { guards: [method_1.method.get()], middleware: serveFile_1.serveFile({ path: path_1.join(__dirname, 'upload', 'upload.html') }) } ] } }; } exports.uploadService = uploadService; function isFileUploadResult(value) { return value && typeof value === 'object' && value.files && value.failed; } exports.fileUploadTransform = (result, _request, response) => { if (isFileUploadResult(result)) { const successful = result.files.map((file) => `<li>${file}</li>`); const failed = result.failed.map((file) => `<li>${file}</li>`); const body = ` <div> <h1>Successfully Uploaded</h1> <ul>${successful}</ul> </div> ${failed.length ? ` <div> <h1>Failed</h1> <ul>${failed}</ul> </div> ` : ''}`; const html = htmlTemplate_1.htmlTemplate('Upload Complete', body); response.write(html); response.end(); } }; }); //# sourceMappingURL=upload.service.js.map