@von-development-studio/angular-rest-service 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/von-development-studio-angular-rest-service.umd.js +19 -12
- package/bundles/von-development-studio-angular-rest-service.umd.js.map +1 -1
- package/bundles/von-development-studio-angular-rest-service.umd.min.js +1 -1
- package/bundles/von-development-studio-angular-rest-service.umd.min.js.map +1 -1
- package/esm2015/lib/model/von-error-rest-interceptor.model.js +1 -1
- package/esm2015/lib/von-rest-interceptor.service.js +19 -12
- package/fesm2015/von-development-studio-angular-rest-service.js +18 -11
- package/fesm2015/von-development-studio-angular-rest-service.js.map +1 -1
- package/lib/model/von-error-rest-interceptor.model.d.ts +1 -0
- package/lib/von-rest-interceptor.service.d.ts +5 -1
- package/package.json +1 -1
- package/von-development-studio-angular-rest-service.metadata.json +1 -1
|
@@ -6,17 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
var VonRestInterceptorService = /** @class */ (function () {
|
|
8
8
|
function VonRestInterceptorService(router) {
|
|
9
|
+
var _this = this;
|
|
9
10
|
this.router = router;
|
|
10
11
|
this.consoleDebug = false;
|
|
11
12
|
this.errorResponseUnknown = 'Unknown Error';
|
|
12
13
|
this.errorResponseForbidden = 'Forbidden Error';
|
|
13
14
|
this.urlWhoAmI = 'api/who-am-i';
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var _this = this;
|
|
19
|
-
return next.handle(request).pipe(operators.map(function (event) {
|
|
15
|
+
this.redirectOn403 = true;
|
|
16
|
+
this.redirect403Url = ['403'];
|
|
17
|
+
this.postHttpRequest = function () { };
|
|
18
|
+
this.mapEvent = function (event) {
|
|
20
19
|
if (event instanceof http.HttpResponse) {
|
|
21
20
|
if (event.status === 200 || event.status === 204) {
|
|
22
21
|
_this.postHttpRequest();
|
|
@@ -25,7 +24,8 @@
|
|
|
25
24
|
if (event.status !== 200) {
|
|
26
25
|
var error = {
|
|
27
26
|
status: event.status,
|
|
28
|
-
message: event.statusText
|
|
27
|
+
message: event.statusText,
|
|
28
|
+
body: event.body,
|
|
29
29
|
};
|
|
30
30
|
if (_this.consoleDebug) {
|
|
31
31
|
console.error('[ErrorWS]: ', error);
|
|
@@ -34,13 +34,15 @@
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
return event;
|
|
37
|
-
}
|
|
37
|
+
};
|
|
38
|
+
this.catchError = function (errorResponse) {
|
|
38
39
|
if (_this.consoleDebug) {
|
|
39
40
|
console.error('[Fatal]: ', errorResponse);
|
|
40
41
|
}
|
|
41
42
|
var error = {
|
|
42
43
|
status: errorResponse.status,
|
|
43
|
-
message: ''
|
|
44
|
+
message: '',
|
|
45
|
+
body: errorResponse.error || {},
|
|
44
46
|
};
|
|
45
47
|
if (errorResponse.status === 0) {
|
|
46
48
|
error.message = _this.errorResponseUnknown;
|
|
@@ -48,12 +50,17 @@
|
|
|
48
50
|
if (errorResponse.status === 401) {
|
|
49
51
|
error.message = errorResponse.error ? errorResponse.error : _this.errorResponseForbidden;
|
|
50
52
|
}
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
+
if (_this.redirectOn403) {
|
|
54
|
+
if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(_this.urlWhoAmI) > -1)) {
|
|
55
|
+
_this.router.navigate(_this.redirect403Url);
|
|
56
|
+
}
|
|
53
57
|
}
|
|
54
58
|
_this.postHttpRequest();
|
|
55
59
|
return rxjs.throwError(error);
|
|
56
|
-
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
VonRestInterceptorService.prototype.intercept = function (request, next) {
|
|
63
|
+
return next.handle(request).pipe(operators.map(this.mapEvent), operators.catchError(this.catchError));
|
|
57
64
|
};
|
|
58
65
|
return VonRestInterceptorService;
|
|
59
66
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"von-development-studio-angular-rest-service.umd.js","sources":["../../projects/angular-rest-service/src/lib/von-rest-interceptor.service.ts","../../projects/angular-rest-service/src/lib/von-rest.service.ts","../../../projects/angular-rest-service/src/von-development-studio-angular-rest-service.ts"],"sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './model/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n\n constructor(\n protected router: Router\n ) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n }),\n\n catchError((errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: ''\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;\n }\n if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {\n this.router.navigate(['403']);\n }\n this.postHttpRequest();\n return throwError(error);\n })\n );\n }\n\n protected postHttpRequest = () => {\n }\n\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { VonHttpOptionsModel } from './model/von-http-options.model';\n\nexport abstract class VonRestService {\n\n constructor(\n protected http: HttpClient,\n protected sanitizer: DomSanitizer\n ) { }\n\n private setHeaders = (contentType: string = 'application/json'): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: contentType,\n 'Access-Control-Allow-Origin': '*'\n });\n }\n\n private setOptions = (params?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n headers: this.setHeaders(),\n params,\n withCredentials: true\n };\n }\n\n private setUrlParams = (url: string, params?: { [key: string]: any }) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n }\n\n authenticate = (url: string, username: string, password: string): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http.get(url, {\n headers,\n withCredentials: true\n }).pipe(\n take(1),\n share()\n );\n }\n\n logout = (url: string): Observable<any> => {\n return this.http.delete<string>(url, this.setOptions()).pipe(\n take(1),\n share()\n );\n }\n\n get = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<T>(url, this.setOptions(queryParams));\n }\n\n delete = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<T>(url, this.setOptions(queryParams));\n }\n\n post = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post<T>(url, body, this.setOptions(queryParams));\n }\n\n put = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put<T>(url, body, this.setOptions(queryParams));\n }\n\n patch = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch<T>(url, body, this.setOptions(queryParams));\n }\n\n private setFileOptions = (contentType: string, queryParams?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n ...this.setOptions(queryParams),\n headers: this.setHeaders(contentType),\n responseType: 'blob' as 'json'\n };\n }\n\n getFile = (contentType: string, url: string, urlParams?: any, queryParams?: any): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get(url, this.setFileOptions(contentType, queryParams)).pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: contentType });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n }\n\n postFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n putFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n patchFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","HttpResponse","catchError","throwError","http","HttpHeaders","take","share"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"von-development-studio-angular-rest-service.umd.js","sources":["../../projects/angular-rest-service/src/lib/von-rest-interceptor.service.ts","../../projects/angular-rest-service/src/lib/von-rest.service.ts","../../../projects/angular-rest-service/src/von-development-studio-angular-rest-service.ts"],"sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './model/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n protected redirectOn403 = true;\n protected redirect403Url = ['403'];\n\n constructor(protected router: Router) {}\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(map(this.mapEvent), catchError(this.catchError));\n }\n\n protected postHttpRequest = () => {};\n\n protected mapEvent = (event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText,\n body: event.body,\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n };\n\n protected catchError = (errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: '',\n body: errorResponse.error || {},\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;\n }\n if (this.redirectOn403) {\n if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {\n this.router.navigate(this.redirect403Url);\n }\n }\n this.postHttpRequest();\n return throwError(error);\n };\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { VonHttpOptionsModel } from './model/von-http-options.model';\n\nexport abstract class VonRestService {\n\n constructor(\n protected http: HttpClient,\n protected sanitizer: DomSanitizer\n ) { }\n\n private setHeaders = (contentType: string = 'application/json'): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: contentType,\n 'Access-Control-Allow-Origin': '*'\n });\n }\n\n private setOptions = (params?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n headers: this.setHeaders(),\n params,\n withCredentials: true\n };\n }\n\n private setUrlParams = (url: string, params?: { [key: string]: any }) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n }\n\n authenticate = (url: string, username: string, password: string): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http.get(url, {\n headers,\n withCredentials: true\n }).pipe(\n take(1),\n share()\n );\n }\n\n logout = (url: string): Observable<any> => {\n return this.http.delete<string>(url, this.setOptions()).pipe(\n take(1),\n share()\n );\n }\n\n get = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<T>(url, this.setOptions(queryParams));\n }\n\n delete = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<T>(url, this.setOptions(queryParams));\n }\n\n post = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post<T>(url, body, this.setOptions(queryParams));\n }\n\n put = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put<T>(url, body, this.setOptions(queryParams));\n }\n\n patch = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch<T>(url, body, this.setOptions(queryParams));\n }\n\n private setFileOptions = (contentType: string, queryParams?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n ...this.setOptions(queryParams),\n headers: this.setHeaders(contentType),\n responseType: 'blob' as 'json'\n };\n }\n\n getFile = (contentType: string, url: string, urlParams?: any, queryParams?: any): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get(url, this.setFileOptions(contentType, queryParams)).pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: contentType });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n }\n\n postFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n putFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n patchFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HttpResponse","throwError","map","catchError","http","HttpHeaders","take","share"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/common/http"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@von-development-studio/angular-rest-service",["exports","@angular/common/http","rxjs","rxjs/operators"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["von-development-studio"]=t["von-development-studio"]||{},t["von-development-studio"]["angular-rest-service"]={}),t.ng.common.http,t.rxjs,t.rxjs.operators)}(this,(function(t,e,s
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/common/http"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@von-development-studio/angular-rest-service",["exports","@angular/common/http","rxjs","rxjs/operators"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self)["von-development-studio"]=t["von-development-studio"]||{},t["von-development-studio"]["angular-rest-service"]={}),t.ng.common.http,t.rxjs,t.rxjs.operators)}(this,(function(t,e,r,s){"use strict";var n=function(){function t(t){var s=this;this.router=t,this.consoleDebug=!1,this.errorResponseUnknown="Unknown Error",this.errorResponseForbidden="Forbidden Error",this.urlWhoAmI="api/who-am-i",this.redirectOn403=!0,this.redirect403Url=["403"],this.postHttpRequest=function(){},this.mapEvent=function(t){if(t instanceof e.HttpResponse){if(200===t.status||204===t.status)return s.postHttpRequest(),t;if(200!==t.status){var r={status:t.status,message:t.statusText,body:t.body};throw s.consoleDebug&&console.error("[ErrorWS]: ",r),r}}return t},this.catchError=function(t){s.consoleDebug&&console.error("[Fatal]: ",t);var e={status:t.status,message:"",body:t.error||{}};return 0===t.status&&(e.message=s.errorResponseUnknown),401===t.status&&(e.message=t.error?t.error:s.errorResponseForbidden),s.redirectOn403&&(403===t.status||t.url&&t.url.indexOf(s.urlWhoAmI)>-1)&&s.router.navigate(s.redirect403Url),s.postHttpRequest(),r.throwError(e)}}return t.prototype.intercept=function(t,e){return e.handle(t).pipe(s.map(this.mapEvent),s.catchError(this.catchError))},t}(),o=function(t,r){var n=this;this.http=t,this.sanitizer=r,this.setHeaders=function(t){return void 0===t&&(t="application/json"),new e.HttpHeaders({"Content-Type":"application/json",Accept:t,"Access-Control-Allow-Origin":"*"})},this.setOptions=function(t){return{headers:n.setHeaders(),params:t,withCredentials:!0}},this.setUrlParams=function(t,e){if(null!=e)for(var r in e)null!=r&&(t=t.replace("{"+r+"}",e[r]));return t},this.authenticate=function(t,r,o){var i=btoa(r+":"+o),a=new e.HttpHeaders({authorization:"Basic "+i});return n.http.get(t,{headers:a,withCredentials:!0}).pipe(s.take(1),s.share())},this.logout=function(t){return n.http.delete(t,n.setOptions()).pipe(s.take(1),s.share())},this.get=function(t,e,r){return t=n.setUrlParams(t,e),n.http.get(t,n.setOptions(r))},this.delete=function(t,e,r){return t=n.setUrlParams(t,e),n.http.delete(t,n.setOptions(r))},this.post=function(t,e,r,s){return t=n.setUrlParams(t,r),n.http.post(t,e,n.setOptions(s))},this.put=function(t,e,r,s){return t=n.setUrlParams(t,r),n.http.put(t,e,n.setOptions(s))},this.patch=function(t,e,r,s){return t=n.setUrlParams(t,r),n.http.patch(t,e,n.setOptions(s))},this.setFileOptions=function(t,e){return Object.assign(Object.assign({},n.setOptions(e)),{headers:n.setHeaders(t),responseType:"blob"})},this.getFile=function(t,e,r,o){return e=n.setUrlParams(e,r),n.http.get(e,n.setFileOptions(t,o)).pipe(s.map((function(e){var r=new Blob([e],{type:t}),s=URL.createObjectURL(r);return n.sanitizer.bypassSecurityTrustResourceUrl(s)})))},this.postFile=function(t,e,r,s,o){return e=n.setUrlParams(e,s),n.http.post(e,r,n.setFileOptions(t,o))},this.putFile=function(t,e,r,s,o){return e=n.setUrlParams(e,s),n.http.put(e,r,n.setFileOptions(t,o))},this.patchFile=function(t,e,r,s,o){return e=n.setUrlParams(e,s),n.http.patch(e,r,n.setFileOptions(t,o))}};t.VonRestInterceptorService=n,t.VonRestService=o,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=von-development-studio-angular-rest-service.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../projects/angular-rest-service/src/lib/von-rest-interceptor.service.ts","../../projects/angular-rest-service/src/lib/von-rest.service.ts"],"names":["VonRestInterceptorService","router","this","consoleDebug","errorResponseUnknown","errorResponseForbidden","urlWhoAmI","postHttpRequest","prototype","intercept","request","next","_this","handle","pipe","map","event","HttpResponse","status","error","message","statusText","console","catchError","errorResponse","url","indexOf","navigate","throwError","http","sanitizer","setHeaders","contentType","HttpHeaders","Content-Type","Accept","Access-Control-Allow-Origin","setOptions","params","headers","withCredentials","setUrlParams","p","replace","authenticate","username","password","authorization","btoa","get","take","share","logout","delete","urlParams","queryParams","post","body","put","patch","setFileOptions","Object","assign","responseType","getFile","res","fileBlob","Blob","type","objUrl","URL","createObjectURL","bypassSecurityTrustResourceUrl","postFile","putFile","patchFile"],"mappings":"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","sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './model/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n\n constructor(\n protected router: Router\n ) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n }),\n\n catchError((errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: ''\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;\n }\n if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {\n this.router.navigate(['403']);\n }\n this.postHttpRequest();\n return throwError(error);\n })\n );\n }\n\n protected postHttpRequest = () => {\n }\n\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { VonHttpOptionsModel } from './model/von-http-options.model';\n\nexport abstract class VonRestService {\n\n constructor(\n protected http: HttpClient,\n protected sanitizer: DomSanitizer\n ) { }\n\n private setHeaders = (contentType: string = 'application/json'): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: contentType,\n 'Access-Control-Allow-Origin': '*'\n });\n }\n\n private setOptions = (params?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n headers: this.setHeaders(),\n params,\n withCredentials: true\n };\n }\n\n private setUrlParams = (url: string, params?: { [key: string]: any }) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n }\n\n authenticate = (url: string, username: string, password: string): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http.get(url, {\n headers,\n withCredentials: true\n }).pipe(\n take(1),\n share()\n );\n }\n\n logout = (url: string): Observable<any> => {\n return this.http.delete<string>(url, this.setOptions()).pipe(\n take(1),\n share()\n );\n }\n\n get = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<T>(url, this.setOptions(queryParams));\n }\n\n delete = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<T>(url, this.setOptions(queryParams));\n }\n\n post = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post<T>(url, body, this.setOptions(queryParams));\n }\n\n put = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put<T>(url, body, this.setOptions(queryParams));\n }\n\n patch = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch<T>(url, body, this.setOptions(queryParams));\n }\n\n private setFileOptions = (contentType: string, queryParams?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n ...this.setOptions(queryParams),\n headers: this.setHeaders(contentType),\n responseType: 'blob' as 'json'\n };\n }\n\n getFile = (contentType: string, url: string, urlParams?: any, queryParams?: any): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get(url, this.setFileOptions(contentType, queryParams)).pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: contentType });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n }\n\n postFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n putFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n patchFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../projects/angular-rest-service/src/lib/von-rest-interceptor.service.ts","../../projects/angular-rest-service/src/lib/von-rest.service.ts"],"names":["VonRestInterceptorService","router","_this","this","consoleDebug","errorResponseUnknown","errorResponseForbidden","urlWhoAmI","redirectOn403","redirect403Url","postHttpRequest","mapEvent","event","HttpResponse","status","error","message","statusText","body","console","catchError","errorResponse","url","indexOf","navigate","throwError","prototype","intercept","request","next","handle","pipe","map","http","sanitizer","setHeaders","contentType","HttpHeaders","Content-Type","Accept","Access-Control-Allow-Origin","setOptions","params","headers","withCredentials","setUrlParams","p","replace","authenticate","username","password","authorization","btoa","get","take","share","logout","delete","urlParams","queryParams","post","put","patch","setFileOptions","Object","assign","responseType","getFile","res","fileBlob","Blob","type","objUrl","URL","createObjectURL","bypassSecurityTrustResourceUrl","postFile","putFile","patchFile"],"mappings":"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","sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './model/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n protected redirectOn403 = true;\n protected redirect403Url = ['403'];\n\n constructor(protected router: Router) {}\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(map(this.mapEvent), catchError(this.catchError));\n }\n\n protected postHttpRequest = () => {};\n\n protected mapEvent = (event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText,\n body: event.body,\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n };\n\n protected catchError = (errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: '',\n body: errorResponse.error || {},\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;\n }\n if (this.redirectOn403) {\n if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {\n this.router.navigate(this.redirect403Url);\n }\n }\n this.postHttpRequest();\n return throwError(error);\n };\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { VonHttpOptionsModel } from './model/von-http-options.model';\n\nexport abstract class VonRestService {\n\n constructor(\n protected http: HttpClient,\n protected sanitizer: DomSanitizer\n ) { }\n\n private setHeaders = (contentType: string = 'application/json'): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: contentType,\n 'Access-Control-Allow-Origin': '*'\n });\n }\n\n private setOptions = (params?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n headers: this.setHeaders(),\n params,\n withCredentials: true\n };\n }\n\n private setUrlParams = (url: string, params?: { [key: string]: any }) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n }\n\n authenticate = (url: string, username: string, password: string): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http.get(url, {\n headers,\n withCredentials: true\n }).pipe(\n take(1),\n share()\n );\n }\n\n logout = (url: string): Observable<any> => {\n return this.http.delete<string>(url, this.setOptions()).pipe(\n take(1),\n share()\n );\n }\n\n get = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<T>(url, this.setOptions(queryParams));\n }\n\n delete = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<T>(url, this.setOptions(queryParams));\n }\n\n post = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post<T>(url, body, this.setOptions(queryParams));\n }\n\n put = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put<T>(url, body, this.setOptions(queryParams));\n }\n\n patch = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch<T>(url, body, this.setOptions(queryParams));\n }\n\n private setFileOptions = (contentType: string, queryParams?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n ...this.setOptions(queryParams),\n headers: this.setHeaders(contentType),\n responseType: 'blob' as 'json'\n };\n }\n\n getFile = (contentType: string, url: string, urlParams?: any, queryParams?: any): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get(url, this.setFileOptions(contentType, queryParams)).pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: contentType });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n }\n\n postFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n putFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n patchFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1yZXN0LXNlcnZpY2Uvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGVsL3Zvbi1lcnJvci1yZXN0LWludGVyY2VwdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZvbkVycm9yUmVzdEludGVyY2VwdG9yTW9kZWwge1xuICBzdGF0dXM6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBib2R5PzogYW55O1xufVxuIl19
|
|
@@ -8,11 +8,10 @@ export class VonRestInterceptorService {
|
|
|
8
8
|
this.errorResponseUnknown = 'Unknown Error';
|
|
9
9
|
this.errorResponseForbidden = 'Forbidden Error';
|
|
10
10
|
this.urlWhoAmI = 'api/who-am-i';
|
|
11
|
-
this.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return next.handle(request).pipe(map((event) => {
|
|
11
|
+
this.redirectOn403 = true;
|
|
12
|
+
this.redirect403Url = ['403'];
|
|
13
|
+
this.postHttpRequest = () => { };
|
|
14
|
+
this.mapEvent = (event) => {
|
|
16
15
|
if (event instanceof HttpResponse) {
|
|
17
16
|
if (event.status === 200 || event.status === 204) {
|
|
18
17
|
this.postHttpRequest();
|
|
@@ -21,7 +20,8 @@ export class VonRestInterceptorService {
|
|
|
21
20
|
if (event.status !== 200) {
|
|
22
21
|
const error = {
|
|
23
22
|
status: event.status,
|
|
24
|
-
message: event.statusText
|
|
23
|
+
message: event.statusText,
|
|
24
|
+
body: event.body,
|
|
25
25
|
};
|
|
26
26
|
if (this.consoleDebug) {
|
|
27
27
|
console.error('[ErrorWS]: ', error);
|
|
@@ -30,13 +30,15 @@ export class VonRestInterceptorService {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
return event;
|
|
33
|
-
}
|
|
33
|
+
};
|
|
34
|
+
this.catchError = (errorResponse) => {
|
|
34
35
|
if (this.consoleDebug) {
|
|
35
36
|
console.error('[Fatal]: ', errorResponse);
|
|
36
37
|
}
|
|
37
38
|
const error = {
|
|
38
39
|
status: errorResponse.status,
|
|
39
|
-
message: ''
|
|
40
|
+
message: '',
|
|
41
|
+
body: errorResponse.error || {},
|
|
40
42
|
};
|
|
41
43
|
if (errorResponse.status === 0) {
|
|
42
44
|
error.message = this.errorResponseUnknown;
|
|
@@ -44,12 +46,17 @@ export class VonRestInterceptorService {
|
|
|
44
46
|
if (errorResponse.status === 401) {
|
|
45
47
|
error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;
|
|
46
48
|
}
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
+
if (this.redirectOn403) {
|
|
50
|
+
if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {
|
|
51
|
+
this.router.navigate(this.redirect403Url);
|
|
52
|
+
}
|
|
49
53
|
}
|
|
50
54
|
this.postHttpRequest();
|
|
51
55
|
return throwError(error);
|
|
52
|
-
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
intercept(request, next) {
|
|
59
|
+
return next.handle(request).pipe(map(this.mapEvent), catchError(this.catchError));
|
|
53
60
|
}
|
|
54
61
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3QtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXJlc3Qtc2VydmljZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdm9uLXJlc3QtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdILE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxNQUFNLE9BQWdCLHlCQUF5QjtJQVE3QyxZQUFzQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVAxQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix5QkFBb0IsR0FBRyxlQUFlLENBQUM7UUFDdkMsMkJBQXNCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsY0FBUyxHQUFHLGNBQWMsQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixtQkFBYyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFRekIsb0JBQWUsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFM0IsYUFBUSxHQUFHLENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQzdDLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtnQkFDakMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUN2QixPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO29CQUN4QixNQUFNLEtBQUssR0FBaUM7d0JBQzFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTt3QkFDcEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVO3dCQUN6QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7cUJBQ2pCLENBQUM7b0JBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDckM7b0JBQ0QsTUFBTSxLQUFLLENBQUM7aUJBQ2I7YUFDRjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO1FBRVEsZUFBVSxHQUFHLENBQUMsYUFBZ0MsRUFBRSxFQUFFO1lBQzFELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDM0M7WUFDRCxNQUFNLEtBQUssR0FBaUM7Z0JBQzFDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtnQkFDNUIsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRTthQUNoQyxDQUFDO1lBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDOUIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7YUFDM0M7WUFDRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO2dCQUNoQyxLQUFLLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQzthQUN6RjtZQUNELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDM0M7YUFDRjtZQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUM7SUFuRHFDLENBQUM7SUFFeEMsU0FBUyxDQUFDLE9BQXlCLEVBQUUsSUFBaUI7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0NBZ0RGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWb25FcnJvclJlc3RJbnRlcmNlcHRvck1vZGVsIH0gZnJvbSAnLi9tb2RlbC92b24tZXJyb3ItcmVzdC1pbnRlcmNlcHRvci5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWb25SZXN0SW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJvdGVjdGVkIGNvbnNvbGVEZWJ1ZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgZXJyb3JSZXNwb25zZVVua25vd24gPSAnVW5rbm93biBFcnJvcic7XG4gIHByb3RlY3RlZCBlcnJvclJlc3BvbnNlRm9yYmlkZGVuID0gJ0ZvcmJpZGRlbiBFcnJvcic7XG4gIHByb3RlY3RlZCB1cmxXaG9BbUkgPSAnYXBpL3doby1hbS1pJztcbiAgcHJvdGVjdGVkIHJlZGlyZWN0T240MDMgPSB0cnVlO1xuICBwcm90ZWN0ZWQgcmVkaXJlY3Q0MDNVcmwgPSBbJzQwMyddO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcikge31cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUobWFwKHRoaXMubWFwRXZlbnQpLCBjYXRjaEVycm9yKHRoaXMuY2F0Y2hFcnJvcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBvc3RIdHRwUmVxdWVzdCA9ICgpID0+IHt9O1xuXG4gIHByb3RlY3RlZCBtYXBFdmVudCA9IChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgIGlmIChldmVudC5zdGF0dXMgPT09IDIwMCB8fCBldmVudC5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICB0aGlzLnBvc3RIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgY29uc3QgZXJyb3I6IFZvbkVycm9yUmVzdEludGVyY2VwdG9yTW9kZWwgPSB7XG4gICAgICAgICAgc3RhdHVzOiBldmVudC5zdGF0dXMsXG4gICAgICAgICAgbWVzc2FnZTogZXZlbnQuc3RhdHVzVGV4dCxcbiAgICAgICAgICBib2R5OiBldmVudC5ib2R5LFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5jb25zb2xlRGVidWcpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbRXJyb3JXU106ICcsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9O1xuXG4gIHByb3RlY3RlZCBjYXRjaEVycm9yID0gKGVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgaWYgKHRoaXMuY29uc29sZURlYnVnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbRmF0YWxdOiAnLCBlcnJvclJlc3BvbnNlKTtcbiAgICB9XG4gICAgY29uc3QgZXJyb3I6IFZvbkVycm9yUmVzdEludGVyY2VwdG9yTW9kZWwgPSB7XG4gICAgICBzdGF0dXM6IGVycm9yUmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgbWVzc2FnZTogJycsXG4gICAgICBib2R5OiBlcnJvclJlc3BvbnNlLmVycm9yIHx8IHt9LFxuICAgIH07XG4gICAgaWYgKGVycm9yUmVzcG9uc2Uuc3RhdHVzID09PSAwKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gdGhpcy5lcnJvclJlc3BvbnNlVW5rbm93bjtcbiAgICB9XG4gICAgaWYgKGVycm9yUmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSBlcnJvclJlc3BvbnNlLmVycm9yID8gZXJyb3JSZXNwb25zZS5lcnJvciA6IHRoaXMuZXJyb3JSZXNwb25zZUZvcmJpZGRlbjtcbiAgICB9XG4gICAgaWYgKHRoaXMucmVkaXJlY3RPbjQwMykge1xuICAgICAgaWYgKGVycm9yUmVzcG9uc2Uuc3RhdHVzID09PSA0MDMgfHwgKGVycm9yUmVzcG9uc2UudXJsICYmIGVycm9yUmVzcG9uc2UudXJsLmluZGV4T2YodGhpcy51cmxXaG9BbUkpID4gLTEpKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMucmVkaXJlY3Q0MDNVcmwpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBvc3RIdHRwUmVxdWVzdCgpO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -9,11 +9,10 @@ class VonRestInterceptorService {
|
|
|
9
9
|
this.errorResponseUnknown = 'Unknown Error';
|
|
10
10
|
this.errorResponseForbidden = 'Forbidden Error';
|
|
11
11
|
this.urlWhoAmI = 'api/who-am-i';
|
|
12
|
-
this.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return next.handle(request).pipe(map((event) => {
|
|
12
|
+
this.redirectOn403 = true;
|
|
13
|
+
this.redirect403Url = ['403'];
|
|
14
|
+
this.postHttpRequest = () => { };
|
|
15
|
+
this.mapEvent = (event) => {
|
|
17
16
|
if (event instanceof HttpResponse) {
|
|
18
17
|
if (event.status === 200 || event.status === 204) {
|
|
19
18
|
this.postHttpRequest();
|
|
@@ -22,7 +21,8 @@ class VonRestInterceptorService {
|
|
|
22
21
|
if (event.status !== 200) {
|
|
23
22
|
const error = {
|
|
24
23
|
status: event.status,
|
|
25
|
-
message: event.statusText
|
|
24
|
+
message: event.statusText,
|
|
25
|
+
body: event.body,
|
|
26
26
|
};
|
|
27
27
|
if (this.consoleDebug) {
|
|
28
28
|
console.error('[ErrorWS]: ', error);
|
|
@@ -31,13 +31,15 @@ class VonRestInterceptorService {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
return event;
|
|
34
|
-
}
|
|
34
|
+
};
|
|
35
|
+
this.catchError = (errorResponse) => {
|
|
35
36
|
if (this.consoleDebug) {
|
|
36
37
|
console.error('[Fatal]: ', errorResponse);
|
|
37
38
|
}
|
|
38
39
|
const error = {
|
|
39
40
|
status: errorResponse.status,
|
|
40
|
-
message: ''
|
|
41
|
+
message: '',
|
|
42
|
+
body: errorResponse.error || {},
|
|
41
43
|
};
|
|
42
44
|
if (errorResponse.status === 0) {
|
|
43
45
|
error.message = this.errorResponseUnknown;
|
|
@@ -45,12 +47,17 @@ class VonRestInterceptorService {
|
|
|
45
47
|
if (errorResponse.status === 401) {
|
|
46
48
|
error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;
|
|
47
49
|
}
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
+
if (this.redirectOn403) {
|
|
51
|
+
if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {
|
|
52
|
+
this.router.navigate(this.redirect403Url);
|
|
53
|
+
}
|
|
50
54
|
}
|
|
51
55
|
this.postHttpRequest();
|
|
52
56
|
return throwError(error);
|
|
53
|
-
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
intercept(request, next) {
|
|
60
|
+
return next.handle(request).pipe(map(this.mapEvent), catchError(this.catchError));
|
|
54
61
|
}
|
|
55
62
|
}
|
|
56
63
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"von-development-studio-angular-rest-service.js","sources":["../../projects/angular-rest-service/src/lib/von-rest-interceptor.service.ts","../../projects/angular-rest-service/src/lib/von-rest.service.ts","../../../projects/angular-rest-service/src/von-development-studio-angular-rest-service.ts"],"sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './model/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n\n constructor(\n protected router: Router\n ) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(\n\n map((event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n }),\n\n catchError((errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: ''\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;\n }\n if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {\n this.router.navigate(['403']);\n }\n this.postHttpRequest();\n return throwError(error);\n })\n );\n }\n\n protected postHttpRequest = () => {\n }\n\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { VonHttpOptionsModel } from './model/von-http-options.model';\n\nexport abstract class VonRestService {\n\n constructor(\n protected http: HttpClient,\n protected sanitizer: DomSanitizer\n ) { }\n\n private setHeaders = (contentType: string = 'application/json'): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: contentType,\n 'Access-Control-Allow-Origin': '*'\n });\n }\n\n private setOptions = (params?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n headers: this.setHeaders(),\n params,\n withCredentials: true\n };\n }\n\n private setUrlParams = (url: string, params?: { [key: string]: any }) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n }\n\n authenticate = (url: string, username: string, password: string): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http.get(url, {\n headers,\n withCredentials: true\n }).pipe(\n take(1),\n share()\n );\n }\n\n logout = (url: string): Observable<any> => {\n return this.http.delete<string>(url, this.setOptions()).pipe(\n take(1),\n share()\n );\n }\n\n get = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<T>(url, this.setOptions(queryParams));\n }\n\n delete = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<T>(url, this.setOptions(queryParams));\n }\n\n post = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post<T>(url, body, this.setOptions(queryParams));\n }\n\n put = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put<T>(url, body, this.setOptions(queryParams));\n }\n\n patch = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch<T>(url, body, this.setOptions(queryParams));\n }\n\n private setFileOptions = (contentType: string, queryParams?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n ...this.setOptions(queryParams),\n headers: this.setHeaders(contentType),\n responseType: 'blob' as 'json'\n };\n }\n\n getFile = (contentType: string, url: string, urlParams?: any, queryParams?: any): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get(url, this.setFileOptions(contentType, queryParams)).pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: contentType });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n }\n\n postFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n putFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n patchFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"von-development-studio-angular-rest-service.js","sources":["../../projects/angular-rest-service/src/lib/von-rest-interceptor.service.ts","../../projects/angular-rest-service/src/lib/von-rest.service.ts","../../../projects/angular-rest-service/src/von-development-studio-angular-rest-service.ts"],"sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { VonErrorRestInterceptorModel } from './model/von-error-rest-interceptor.model';\n\nexport abstract class VonRestInterceptorService implements HttpInterceptor {\n protected consoleDebug = false;\n protected errorResponseUnknown = 'Unknown Error';\n protected errorResponseForbidden = 'Forbidden Error';\n protected urlWhoAmI = 'api/who-am-i';\n protected redirectOn403 = true;\n protected redirect403Url = ['403'];\n\n constructor(protected router: Router) {}\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n return next.handle(request).pipe(map(this.mapEvent), catchError(this.catchError));\n }\n\n protected postHttpRequest = () => {};\n\n protected mapEvent = (event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n if (event.status === 200 || event.status === 204) {\n this.postHttpRequest();\n return event;\n }\n if (event.status !== 200) {\n const error: VonErrorRestInterceptorModel = {\n status: event.status,\n message: event.statusText,\n body: event.body,\n };\n if (this.consoleDebug) {\n console.error('[ErrorWS]: ', error);\n }\n throw error;\n }\n }\n return event;\n };\n\n protected catchError = (errorResponse: HttpErrorResponse) => {\n if (this.consoleDebug) {\n console.error('[Fatal]: ', errorResponse);\n }\n const error: VonErrorRestInterceptorModel = {\n status: errorResponse.status,\n message: '',\n body: errorResponse.error || {},\n };\n if (errorResponse.status === 0) {\n error.message = this.errorResponseUnknown;\n }\n if (errorResponse.status === 401) {\n error.message = errorResponse.error ? errorResponse.error : this.errorResponseForbidden;\n }\n if (this.redirectOn403) {\n if (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {\n this.router.navigate(this.redirect403Url);\n }\n }\n this.postHttpRequest();\n return throwError(error);\n };\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map, share, take } from 'rxjs/operators';\nimport { VonHttpOptionsModel } from './model/von-http-options.model';\n\nexport abstract class VonRestService {\n\n constructor(\n protected http: HttpClient,\n protected sanitizer: DomSanitizer\n ) { }\n\n private setHeaders = (contentType: string = 'application/json'): HttpHeaders => {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: contentType,\n 'Access-Control-Allow-Origin': '*'\n });\n }\n\n private setOptions = (params?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n headers: this.setHeaders(),\n params,\n withCredentials: true\n };\n }\n\n private setUrlParams = (url: string, params?: { [key: string]: any }) => {\n if (params != null) {\n for (const p in params) {\n if (p != null) {\n url = url.replace(`{${p}}`, params[p]);\n }\n }\n }\n return url;\n }\n\n authenticate = (url: string, username: string, password: string): Observable<any> => {\n const authorization = btoa(`${username}:${password}`);\n const headers = new HttpHeaders({\n authorization: `Basic ${authorization}`,\n });\n return this.http.get(url, {\n headers,\n withCredentials: true\n }).pipe(\n take(1),\n share()\n );\n }\n\n logout = (url: string): Observable<any> => {\n return this.http.delete<string>(url, this.setOptions()).pipe(\n take(1),\n share()\n );\n }\n\n get = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get<T>(url, this.setOptions(queryParams));\n }\n\n delete = <T = any>(url: string, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.delete<T>(url, this.setOptions(queryParams));\n }\n\n post = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post<T>(url, body, this.setOptions(queryParams));\n }\n\n put = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put<T>(url, body, this.setOptions(queryParams));\n }\n\n patch = <T = any>(url: string, body: any, urlParams?: any, queryParams?: any): Observable<T> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch<T>(url, body, this.setOptions(queryParams));\n }\n\n private setFileOptions = (contentType: string, queryParams?: { [key: string]: any }): VonHttpOptionsModel => {\n return {\n ...this.setOptions(queryParams),\n headers: this.setHeaders(contentType),\n responseType: 'blob' as 'json'\n };\n }\n\n getFile = (contentType: string, url: string, urlParams?: any, queryParams?: any): Observable<SafeResourceUrl> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.get(url, this.setFileOptions(contentType, queryParams)).pipe(\n map((res: any) => {\n const fileBlob = new Blob([res], { type: contentType });\n const objUrl = URL.createObjectURL(fileBlob);\n const sanitized = this.sanitizer.bypassSecurityTrustResourceUrl(objUrl);\n return sanitized;\n })\n );\n }\n\n postFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.post(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n putFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.put(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n patchFile = (contentType: string, url: string, body: any, urlParams?: any, queryParams?: any): Observable<any> => {\n url = this.setUrlParams(url, urlParams);\n return this.http.patch(url, body, this.setFileOptions(contentType, queryParams));\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAMsB,yBAAyB;IAQ7C,YAAsB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAP1B,iBAAY,GAAG,KAAK,CAAC;QACrB,yBAAoB,GAAG,eAAe,CAAC;QACvC,2BAAsB,GAAG,iBAAiB,CAAC;QAC3C,cAAS,GAAG,cAAc,CAAC;QAC3B,kBAAa,GAAG,IAAI,CAAC;QACrB,mBAAc,GAAG,CAAC,KAAK,CAAC,CAAC;QAQzB,oBAAe,GAAG,SAAQ,CAAC;QAE3B,aAAQ,GAAG,CAAC,KAAqB;YACzC,IAAI,KAAK,YAAY,YAAY,EAAE;gBACjC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;oBAChD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;oBACxB,MAAM,KAAK,GAAiC;wBAC1C,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,OAAO,EAAE,KAAK,CAAC,UAAU;wBACzB,IAAI,EAAE,KAAK,CAAC,IAAI;qBACjB,CAAC;oBACF,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;qBACrC;oBACD,MAAM,KAAK,CAAC;iBACb;aACF;YACD,OAAO,KAAK,CAAC;SACd,CAAC;QAEQ,eAAU,GAAG,CAAC,aAAgC;YACtD,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;aAC3C;YACD,MAAM,KAAK,GAAiC;gBAC1C,MAAM,EAAE,aAAa,CAAC,MAAM;gBAC5B,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE;aAChC,CAAC;YACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;aAC3C;YACD,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,EAAE;gBAChC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC;aACzF;YACD,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,aAAa,CAAC,MAAM,KAAK,GAAG,KAAK,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACzG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBAC3C;aACF;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B,CAAC;KAnDsC;IAExC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACnF;;;MCZmB,cAAc;IAElC,YACY,IAAgB,EAChB,SAAuB;QADvB,SAAI,GAAJ,IAAI,CAAY;QAChB,cAAS,GAAT,SAAS,CAAc;QAG3B,eAAU,GAAG,CAAC,cAAsB,kBAAkB;YAC5D,OAAO,IAAI,WAAW,CAAC;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,WAAW;gBACnB,6BAA6B,EAAE,GAAG;aACnC,CAAC,CAAC;SACJ,CAAA;QAEO,eAAU,GAAG,CAAC,MAA+B;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,MAAM;gBACN,eAAe,EAAE,IAAI;aACtB,CAAC;SACH,CAAA;QAEO,iBAAY,GAAG,CAAC,GAAW,EAAE,MAA+B;YAClE,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;oBACtB,IAAI,CAAC,IAAI,IAAI,EAAE;wBACb,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACxC;iBACF;aACF;YACD,OAAO,GAAG,CAAC;SACZ,CAAA;QAED,iBAAY,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,QAAgB;YAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;gBAC9B,aAAa,EAAE,SAAS,aAAa,EAAE;aACxC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gBACxB,OAAO;gBACP,eAAe,EAAE,IAAI;aACtB,CAAC,CAAC,IAAI,CACL,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EAAE,CACR,CAAC;SACH,CAAA;QAED,WAAM,GAAG,CAAC,GAAW;YACnB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAS,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAC1D,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,EAAE,CACR,CAAC;SACH,CAAA;QAED,QAAG,GAAG,CAAU,GAAW,EAAE,SAAe,EAAE,WAAiB;YAC7D,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SAC5D,CAAA;QAED,WAAM,GAAG,CAAU,GAAW,EAAE,SAAe,EAAE,WAAiB;YAChE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAI,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SAC/D,CAAA;QAED,SAAI,GAAG,CAAU,GAAW,EAAE,IAAS,EAAE,SAAe,EAAE,WAAiB;YACzE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SACnE,CAAA;QAED,QAAG,GAAG,CAAU,GAAW,EAAE,IAAS,EAAE,SAAe,EAAE,WAAiB;YACxE,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SAClE,CAAA;QAED,UAAK,GAAG,CAAU,GAAW,EAAE,IAAS,EAAE,SAAe,EAAE,WAAiB;YAC1E,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SACpE,CAAA;QAEO,mBAAc,GAAG,CAAC,WAAmB,EAAE,WAAoC;YACjF,uCACK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAC/B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EACrC,YAAY,EAAE,MAAgB,IAC9B;SACH,CAAA;QAED,YAAO,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,SAAe,EAAE,WAAiB;YAC7E,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAC3E,GAAG,CAAC,CAAC,GAAQ;gBACX,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC;gBACxE,OAAO,SAAS,CAAC;aAClB,CAAC,CACH,CAAC;SACH,CAAA;QAED,aAAQ,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,IAAS,EAAE,SAAe,EAAE,WAAiB;YACzF,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;SACjF,CAAA;QAED,YAAO,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,IAAS,EAAE,SAAe,EAAE,WAAiB;YACxF,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;SAChF,CAAA;QAED,cAAS,GAAG,CAAC,WAAmB,EAAE,GAAW,EAAE,IAAS,EAAE,SAAe,EAAE,WAAiB;YAC1F,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;SAClF,CAAA;KA5GI;;;ACXP;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
|
|
1
|
+
import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
4
|
export declare abstract class VonRestInterceptorService implements HttpInterceptor {
|
|
@@ -7,7 +7,11 @@ export declare abstract class VonRestInterceptorService implements HttpIntercept
|
|
|
7
7
|
protected errorResponseUnknown: string;
|
|
8
8
|
protected errorResponseForbidden: string;
|
|
9
9
|
protected urlWhoAmI: string;
|
|
10
|
+
protected redirectOn403: boolean;
|
|
11
|
+
protected redirect403Url: string[];
|
|
10
12
|
constructor(router: Router);
|
|
11
13
|
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
12
14
|
protected postHttpRequest: () => void;
|
|
15
|
+
protected mapEvent: (event: HttpEvent<any>) => HttpEvent<any>;
|
|
16
|
+
protected catchError: (errorResponse: HttpErrorResponse) => Observable<never>;
|
|
13
17
|
}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"VonErrorResponseModel":{"__symbolic":"interface"},"VonErrorRestInterceptorModel":{"__symbolic":"interface"},"VonPageResponseModel":{"__symbolic":"interface"},"VonRestInterceptorService":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":14,"character":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"VonErrorResponseModel":{"__symbolic":"interface"},"VonErrorRestInterceptorModel":{"__symbolic":"interface"},"VonPageResponseModel":{"__symbolic":"interface"},"VonRestInterceptorService":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":14,"character":32}]}],"intercept":[{"__symbolic":"method"}]}},"VonRestService":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":9,"character":20},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":10,"character":25}]}]}}},"origins":{"VonErrorResponseModel":"./lib/model/von-error-response.model","VonErrorRestInterceptorModel":"./lib/model/von-error-rest-interceptor.model","VonPageResponseModel":"./lib/model/von-page-response.model","VonRestInterceptorService":"./lib/von-rest-interceptor.service","VonRestService":"./lib/von-rest.service"},"importAs":"@von-development-studio/angular-rest-service"}
|