Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import { Injectable, NestInterceptor, ExecutionContext, CallHandler, RequestTimeoutException, } from '@nestjs/common'; import { Observable, throwError, TimeoutError } from 'rxjs'; import { catchError, timeout } from 'rxjs/operators'; @Injectable() export class TimeoutInterceptor implements NestInterceptor { private readonly timeoutMs: number; constructor() { const timeoutValue = parseInt(process.env.REQUEST_TIMEOUT_MS, 10); this.timeoutMs = !isNaN(timeoutValue) ? timeoutValue : 120000; } intercept(context: ExecutionContext, next: CallHandler): Observable<any> { return next.handle().pipe( timeout(this.timeoutMs), catchError((err) => { Iif (err instanceof TimeoutError) { return throwError(() => new RequestTimeoutException()); } return throwError(() => err); }), ); } } |