UNPKG

ngx-restangular-jc

Version:
49 lines (39 loc) 1.37 kB
import { Injectable } from '@angular/core'; import { HttpBackend, HttpErrorResponse, HttpRequest, HttpResponse } from '@angular/common/http'; import { throwError, Observable } from 'rxjs'; import { RestangularHelper } from './ngx-restangular-helper'; import { catchError, filter, map } from 'rxjs/operators'; import { HttpEvent } from '@angular/common/http/src/response'; @Injectable() export class RestangularHttp { constructor(public http: HttpBackend) { } createRequest(options): Observable<HttpEvent<any>> { const request = RestangularHelper.createRequest(options); return this.request(request); } request(request: HttpRequest<any>): Observable<HttpEvent<any>> { return this.http.handle(request) .pipe( filter(event => event instanceof HttpResponse), map((response: any) => { if (!response.ok) { return throwError(new HttpErrorResponse(response)); } return response; }), map(response => { response.config = {params: request}; return response; }), catchError(err => { err.request = request; err.data = err.error; err.repeatRequest = (newRequest?) => { return this.request(newRequest || request); }; return throwError(err); }) ); } }