UNPKG

@tsed/platform-http

Version:
36 lines (35 loc) 1.33 kB
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);