@tsed/common
Version:
A TypeScript Framework on top of Express
55 lines • 2.24 kB
JavaScript
;
var PlatformMulterMiddleware_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PlatformMulterMiddleware = void 0;
const tslib_1 = require("tslib");
const di_1 = require("@tsed/di");
const exceptions_1 = require("@tsed/exceptions");
const middleware_1 = require("../../mvc/decorators/class/middleware");
const context_1 = require("../decorators/context");
const PlatformApplication_1 = require("../services/PlatformApplication");
/**
* @middleware
*/
let PlatformMulterMiddleware = PlatformMulterMiddleware_1 = class PlatformMulterMiddleware {
async use(ctx) {
try {
const { fields, options = {} } = ctx.endpoint.get(PlatformMulterMiddleware_1);
const settings = {
...this.settings,
...options
};
/* istanbul ignore next */
if (settings.storage) {
delete settings.dest;
}
const middleware = this.app.multer(settings).fields(this.getFields({ fields }));
return await middleware(ctx.getRequest(), ctx.getResponse());
}
catch (er) {
throw er.code ? new exceptions_1.Exception(er.code, `${er.message} ${er.field || ""}`.trim()) : er;
}
}
getFields(conf) {
return conf.fields.map(({ name, maxCount }) => ({ name, maxCount }));
}
};
tslib_1.__decorate([
di_1.Constant("multer", {}),
tslib_1.__metadata("design:type", Object)
], PlatformMulterMiddleware.prototype, "settings", void 0);
tslib_1.__decorate([
di_1.Inject(),
tslib_1.__metadata("design:type", PlatformApplication_1.PlatformApplication)
], PlatformMulterMiddleware.prototype, "app", void 0);
tslib_1.__decorate([
tslib_1.__param(0, context_1.Context()),
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [Object]),
tslib_1.__metadata("design:returntype", Promise)
], PlatformMulterMiddleware.prototype, "use", null);
PlatformMulterMiddleware = PlatformMulterMiddleware_1 = tslib_1.__decorate([
middleware_1.Middleware()
], PlatformMulterMiddleware);
exports.PlatformMulterMiddleware = PlatformMulterMiddleware;
//# sourceMappingURL=PlatformMulterMiddleware.js.map