@tsed/platform-http
Version:
A TypeScript Framework on top of Express
36 lines (35 loc) • 1.33 kB
JavaScript
import { __decorate, __metadata, __param } from "tslib";
import { uniq } from "@tsed/core";
import { constant, injectable, ProviderType } from "@tsed/di";
import { NotAcceptable } from "@tsed/exceptions";
import { Context } from "@tsed/platform-params";
/**
* @middleware
* @platform
*/
export class PlatformAcceptMimesMiddleware {
constructor() {
this.acceptMimes = constant("acceptMimes", []);
}
$alterEndpointHandlers(handlers, operationRoute) {
const hasAcceptMimes = operationRoute.endpoint.acceptMimes.length || this.acceptMimes.length;
return {
...handlers,
before: [hasAcceptMimes && PlatformAcceptMimesMiddleware, ...handlers.before].filter(Boolean)
};
}
use(ctx) {
const { endpoint, request } = ctx;
const mimes = uniq((endpoint?.get("acceptMimes") || []).concat(this.acceptMimes));
if (mimes.length && !request.accepts(mimes)) {
throw new NotAcceptable(mimes.join(", "));
}
}
}
__decorate([
__param(0, Context()),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], PlatformAcceptMimesMiddleware.prototype, "use", null);
injectable(PlatformAcceptMimesMiddleware).type(ProviderType.MIDDLEWARE).priority(-10);