33 HttpClient ,
44 HttpHeaders ,
55 HttpErrorResponse ,
6+ HttpParams ,
67} from '@angular/common/http' ;
78import { Observable } from 'rxjs/Observable' ;
89import { Subscription } from 'rxjs/internal/Subscription' ;
@@ -21,6 +22,23 @@ export interface APIError {
2122 errorText : string ;
2223}
2324
25+ export interface HttpOptions {
26+ headers ?:
27+ | HttpHeaders
28+ | {
29+ [ header : string ] : string | string [ ] ;
30+ } ;
31+ observe ?: 'body' ;
32+ params ?:
33+ | HttpParams
34+ | {
35+ [ param : string ] : string | string [ ] ;
36+ } ;
37+ reportProgress ?: boolean ;
38+ responseType ?: 'json' ;
39+ withCredentials ?: boolean ;
40+ }
41+
2442/**
2543 * Implementation of angular-http
2644 * https://angular.io/guide/http
@@ -83,50 +101,80 @@ export class ApiBaseService {
83101 this . serverURL = url ;
84102 }
85103
86- public doGet ( url , params = null , data = null ) : Observable < any > {
87- const options = this . getOptions ( url , params , data ) ;
104+ public doGet (
105+ url ,
106+ params = null ,
107+ data = null ,
108+ customOptions ?: Partial < HttpOptions > ,
109+ ) : Observable < any > {
110+ const options = this . getOptions ( customOptions ) ;
88111 url = this . parseURLParams ( url , params ) ;
89112 // TODO: Add support to http.get<RESPONSETYPE>() or on .subscribe
90113 return this . http . get ( this . serverURL + url , options ) . pipe (
91114 // retry(1),
92- catchError ( ( error ) => this . handleError ( error ) )
115+ catchError ( ( error ) => this . handleError ( error ) ) ,
93116 ) ;
94117 }
95118
96- public doPost ( url , params , data ) : Observable < any > {
97- const options = this . getOptions ( url , params , data ) ;
119+ public doPost (
120+ url ,
121+ params ,
122+ data ,
123+ customOptions ?: Partial < HttpOptions > ,
124+ ) : Observable < any > {
125+ const options = this . getOptions ( customOptions ) ;
98126 url = this . parseURLParams ( url , params ) ;
99127 return this . http
100128 . post ( this . serverURL + url , data , options )
101129 . pipe ( catchError ( ( error ) => this . handleError ( error ) ) ) ;
102130 }
103131
104- public doPut ( url , params , data ) : Observable < any > {
105- const options = this . getOptions ( url , params , data ) ;
132+ public doPut (
133+ url ,
134+ params ,
135+ data ,
136+ customOptions ?: Partial < HttpOptions > ,
137+ ) : Observable < any > {
138+ const options = this . getOptions ( customOptions ) ;
106139 url = this . parseURLParams ( url , params ) ;
107140 return this . http
108141 . put ( this . serverURL + url , data , options )
109142 . pipe ( catchError ( ( error ) => this . handleError ( error ) ) ) ;
110143 }
111144
112- public doOptions ( url , params , data = null ) : Observable < any > {
113- const options = this . getOptions ( url , params , data ) ;
145+ public doOptions (
146+ url ,
147+ params ,
148+ data = null ,
149+ customOptions ?: Partial < HttpOptions > ,
150+ ) : Observable < any > {
151+ const options = this . getOptions ( customOptions ) ;
114152 url = this . parseURLParams ( url , params ) ;
115153 return this . http
116154 . options ( this . serverURL + url , options )
117155 . pipe ( catchError ( ( error ) => this . handleError ( error ) ) ) ;
118156 }
119157
120- public doPatch ( url , params , data = null ) : Observable < any > {
121- const options = this . getOptions ( url , params , data ) ;
158+ public doPatch (
159+ url ,
160+ params ,
161+ data = null ,
162+ customOptions ?: Partial < HttpOptions > ,
163+ ) : Observable < any > {
164+ const options = this . getOptions ( customOptions ) ;
122165 url = this . parseURLParams ( url , params ) ;
123166 return this . http
124167 . patch ( this . serverURL + url , options )
125168 . pipe ( catchError ( ( error ) => this . handleError ( error ) ) ) ;
126169 }
127170
128- public doDelete ( url , params , data = null ) : Observable < any > {
129- const options = this . getOptions ( url , params , data ) ;
171+ public doDelete (
172+ url ,
173+ params ,
174+ data = null ,
175+ customOptions ?: Partial < HttpOptions > ,
176+ ) : Observable < any > {
177+ const options = this . getOptions ( customOptions ) ;
130178 url = this . parseURLParams ( url , params ) ;
131179 return this . http
132180 . delete ( this . serverURL + url , options )
@@ -194,11 +242,8 @@ export class ApiBaseService {
194242 } as APIError ) ;
195243 }
196244
197- protected getOptions ( url , params = null , data = null ) {
198- return {
199- headers : this . httpHeaders ,
200- // params: this.parseURLParams(url, params),
201- } ;
245+ protected getOptions ( customOptions ?: Partial < HttpOptions > ) {
246+ return Object . assign ( { headers : { ...this . httpHeaders } } , customOptions ) ;
202247 }
203248
204249 /**
0 commit comments