-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrepo
125 lines (122 loc) · 5.77 KB
/
repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import { Observable } from 'rxjs/Observable';
import { Injectable, OpaqueToken } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
export const API_BASE_URL = new OpaqueToken('API_BASE_URL');
import { SecurityService } from '../../shared/services/security/security.service';
import { StorageService } from '../../shared/services/storage.service';
import { Router } from '@angular/router';
@Injectable()
export class HttpService {
protected jsonParseReviver: (key: string, value: any) => any = undefined;
constructor(private router: Router, private _http: Http, private securityService: SecurityService, private storageService: StorageService) {
}
GetToken<T1, T2, T extends any>(request: T1, url: T2): Observable<T> {
return this._http.get(url.toString(), { headers: this.createAuthorizationHeaders(new Headers(), request.toString()) })
.map((response) => {
return <T>this.MapResponseToDTO(response);
}).catch((response: any, caught: any) => {
if (response instanceof Response) {
try {
return Observable.of(<T>this.MapResponseToDTO(response));
} catch (e) {
return <Observable<T>><any>Observable.throw(e);
}
} else
return <Observable<T>><any>Observable.throw(response);
});
}
Get<T1, T2, T extends any>(request: T1, url: T2): Observable<T> {
return this._http.get(url.toString(), { headers: this.createAuthorizationHeader(new Headers()) })
.map((response) => {
return <T>this.MapResponseToDTO(response);
}).catch((response: any, caught: any) => {
if (response instanceof Response) {
try {
return Observable.of(<T>this.MapResponseToDTO(response));
} catch (e) {
return <Observable<T>><any>Observable.throw(e);
}
} else
return <Observable<T>><any>Observable.throw(response);
});
}
GetModel<T1, T2, T extends any>(request: T1, url: T2): Observable<T> {
const content = JSON.stringify(request);
return this._http.get(url.toString(), { body: content, headers: this.createAuthorizationHeader(new Headers()) })
.map((response) => {
return <T>this.MapResponseToDTO(response);
}).catch((response: any, caught: any) => {
if (response instanceof Response) {
try {
return Observable.of(<T>this.MapResponseToDTO(response));
} catch (e) {
return <Observable<T>><any>Observable.throw(e);
}
} else
return <Observable<T>><any>Observable.throw(response);
});
}
Post<T1, T2, T>(request: T1, url: T2): Observable<T> {
const content = JSON.stringify(request);
return this._http.post(url.toString(), content, { headers: this.createAuthorizationHeader(new Headers()) })
.map((response) => {
return <T>this.MapResponseToDTO(response);
}).catch((response: any, caught: any) => {
if (response instanceof Response) {
try {
return Observable.of(<T>this.MapResponseToDTO(response));
} catch (e) {
return <Observable<T>><any>Observable.throw(e);
}
} else
return <Observable<T>><any>Observable.throw(response);
});
}
Put<T1, T2, T>(request: T1, url: T2): Observable<T> {
const content = JSON.stringify(request);
return this._http.put(url.toString(), content, { headers: this.createAuthorizationHeader(new Headers()) })
.map((response) => {
return <T>this.MapResponseToDTO(response);
}).catch((response: any, caught: any) => {
if (response instanceof Response) {
try {
return Observable.of(<T>this.MapResponseToDTO(response));
} catch (e) {
return <Observable<T>><any>Observable.throw(e);
}
} else
return <Observable<T>><any>Observable.throw(response);
});
}
private MapResponseToDTO<T, T1 extends Response>(response: T1): T {
const data = response.text();
const status = response.status.toString();
if (status === '200' || status === '201' || status === '204') {
let result200: T = null;
this.securityService.signinSilent();
result200 = data === '' ? null : <T>JSON.parse(data, this.jsonParseReviver);
return result200;
}
else {
if (status === '401')
this.router.navigate(['/unauthorized']);
else
this.router.navigate(['/loan-estimate/error'], { queryParams: { status: status } });
}
}
private createAuthorizationHeader(headers: Headers) {
headers.append('Authorization', 'Bearer ' + this.securityService.getAccessToken());
headers.append('Content-Type', 'application/json; charset=UTF-8');
headers.append('Access-Control-Allow-Origin', '*');
return headers;
}
private createAuthorizationHeaders(headers: Headers, token: string) {
headers.append('Authorization', token);
headers.append('Content-Type', 'application/json; charset=UTF-8');
headers.append('Access-Control-Allow-Origin', '*');
return headers;
}
}