projects/commons/src/lib/core/http-client/services/http-client-request.service.ts
Methods |
|
constructor(toastService: ToastService, environment)
|
|||||||||
|
Parameters :
|
| Private checkError | ||||
checkError(error)
|
||||
|
Parameters :
Returns :
void
|
| Private handleError500 | |||
handleError500(undefined)
|
|||
|
Parameters :
Returns :
void
|
| Private handleRefreshToken | ||||
handleRefreshToken(event)
|
||||
|
Parameters :
Returns :
void
|
| Public intercept | |||||||||
intercept(request: HttpRequest
|
|||||||||
|
Parameters :
Returns :
Observable<HttpEvent<any>>
|
import { Observable, throwError } from 'rxjs';
import { catchError, map } from 'rxjs/operators';
import { Inject, Injectable } from '@angular/core';
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { colorsEnum } from '../../../shared';
import { ToastService, toastPositionEnum } from '../../../elements';
@Injectable()
export class HttpClientRequestService implements HttpInterceptor {
constructor(
private readonly toastService: ToastService,
@Inject('Environment') private readonly environment,
) {}
public intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const { url } = request;
return next.handle(request.clone({
url: `${ this.environment.api }${ url }`,
})).pipe(
map((event: HttpEvent<any>) => event),
catchError((event) => {
this.checkError(event);
return throwError(event.error);
})
);
}
private checkError(error) {
if (error.status >= 500) {
this.handleError500(error);
} else if (error.status === 403) {
this.handleRefreshToken(error);
}
}
private handleError500({ error }): void {
this.toastService.open({
message: error.title,
type: colorsEnum.error,
duration: 30000000,
dismissible: true,
position: toastPositionEnum.topCenter
});
}
private handleRefreshToken(event): void {
console.log(event);
}
}