UNPKG

node-web-mvc

Version:
44 lines (43 loc) 2.17 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ResponseStatusException_1 = __importDefault(require("../../../errors/ResponseStatusException")); const ResponseStatus_1 = __importDefault(require("../../annotations/ResponseStatus")); const RuntimeAnnotation_1 = __importDefault(require("../../annotations/annotation/RuntimeAnnotation")); const HttpStatus_1 = __importDefault(require("../../http/HttpStatus")); const ModelAndView_1 = __importDefault(require("../../models/ModelAndView")); class ResponseStatusExceptionResolver { async resolveException(servletContext, handler, error) { var _a; try { if (error instanceof ResponseStatusException_1.default) { return this.resolveResponseStatusException(servletContext, handler, error); } const anno = (_a = RuntimeAnnotation_1.default.getClassAnnotation(error.constructor, ResponseStatus_1.default)) === null || _a === void 0 ? void 0 : _a.nativeAnnotation; if (anno) { return this.resolveResponseStatus(anno.code, anno.reason, servletContext, handler, error); } } catch (ex) { console.warn(`${ResponseStatusExceptionResolver.name} resolveException failure`); console.warn(ex); } return null; } resolveResponseStatusException(servletContext, handler, error) { const response = servletContext.response; const headers = error.getResponseHeaders(); Object.keys(headers).forEach((key) => { response.setHeader(key, headers[key]); }); return this.resolveResponseStatus(error.code, error.reason, servletContext, handler, error); } resolveResponseStatus(code, message, servletContext, handler, error) { const response = servletContext.response; response.sendError(new HttpStatus_1.default(code, message)); return new ModelAndView_1.default(); } } exports.default = ResponseStatusExceptionResolver;