File

projects/commons/src/lib/core/http-client/services/http-client-request.service.ts

Index

Methods

Constructor

constructor(toastService: ToastService, environment)
Parameters :
Name Type Optional
toastService ToastService No
environment No

Methods

Private checkError
checkError(error)
Parameters :
Name Optional
error No
Returns : void
Private handleError500
handleError500(undefined)
Parameters :
Name Optional
No
Returns : void
Private handleRefreshToken
handleRefreshToken(event)
Parameters :
Name Optional
event No
Returns : void
Public intercept
intercept(request: HttpRequest, next: HttpHandler)
Parameters :
Name Type Optional
request HttpRequest<any> No
next HttpHandler No
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);
    }
}

result-matching ""

    No results matching ""