import {Injectable} from "@angular/core"; import {Headers, Http, RequestMethod} from "@angular/http"; import {Router} from "@angular/router"; import {CookieService} from "ngx-cookie-service"; @Injectable() export class HttpClient { constructor(private router: Router, private http: Http, private cookieService: CookieService) { } createAuthorizationHeader() { const cookieField = this.cookieService.get('currentUser'); if (cookieField) { const currentUser = JSON.parse(cookieField); if (new Date().getTime() <= Date.parse(currentUser.tokenExpireDate)) { let headers = new Headers(); headers.append('x-access-token', currentUser.token); return headers; } else { //logout localStorage.removeItem('currentUser'); this.router.navigate(['/login']) } } } get(url, searchParams?) { let headers = this.createAuthorizationHeader(); let options: any = {headers: headers}; if (searchParams) { options.search = searchParams; } return this.http.get(url, options); } post(url, data) { let headers = this.createAuthorizationHeader(); return this.http.post(url, data, { headers: headers }); } put(url, data) { let headers = this.createAuthorizationHeader(); return this.http.put(url, data, { headers: headers }); } patch(url, data) { let headers = this.createAuthorizationHeader(); return this.http.patch(url, data, { headers: headers }); } delete(url) { let headers = this.createAuthorizationHeader(); return this.http.delete(url, { headers: headers }); } request(requestUrl, options) { if (options.method === RequestMethod.Post) { return this.post(requestUrl, options.body); } if (options.method === RequestMethod.Patch) { return this.patch(requestUrl, options.body); } } }