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 33 34 35 | 2x 2x 2x 2x 2x 2x 5x 5x 3x 3x | import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor,
HttpErrorResponse
} from '@angular/common/http';
import { catchError, Observable } from 'rxjs';
import { ApiError } from '@core/errors/api-error';
import { ErrorProcessorService } from '@core/services/error-processor.service';
/**
* Intercepts http errors to rethrow structured ApiError
*/
@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
constructor(private errorProcessorService: ErrorProcessorService) {}
intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
return next.handle(request)
.pipe(
// at this point, errors can be "native" HttpErrorResponse or ApiError already created by this ErrorInterceptor
catchError((error: HttpErrorResponse | ApiError) => {
// Handle the error
Eif(error instanceof HttpErrorResponse) {
return this.errorProcessorService.processError(new ApiError(error));
}
return this.errorProcessorService.processError(error);
})
);
}
}
|