(app: Express,
uri: string | RegExp,
middleware: IMiddlewareProvider)
| 143 | |
| 144 | // made public for unit test and not available on interface contract |
| 145 | registerExceptionFilter(app: Express, |
| 146 | uri: string | RegExp, |
| 147 | middleware: IMiddlewareProvider): void { |
| 148 | let provider = DinoParser.parseMiddlewareProvider(middleware); |
| 149 | |
| 150 | if (DinoUtility.isSyncExceptionFilter(provider.useClass)) { |
| 151 | app.use(uri, (err, req, res, next) => { |
| 152 | let mware = this.resolve<ExceptionFilter>( |
| 153 | provider.useClass, res.locals.dino); |
| 154 | mware.invoke(err, req, res, next); |
| 155 | }); |
| 156 | } else if (DinoUtility.isAsyncExceptionFilter(provider.useClass)) { |
| 157 | app.use(uri, async (err, req, res, next) => { |
| 158 | let mware = this.resolve<ExceptionFilterAsync>( |
| 159 | provider.useClass, res.locals.dino); |
| 160 | try { |
| 161 | await mware.invoke(err, req, res, next); |
| 162 | } catch (err) { |
| 163 | next(err); |
| 164 | } |
| 165 | }); |
| 166 | } |
| 167 | } |
| 168 | |
| 169 | expressRouter(): Router { |
| 170 | return this.router; |
no test coverage detected