@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.
@@ -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.postHttpRequest = function () {
15
- };
16
- }
17
- VonRestInterceptorService.prototype.intercept = function (request, next) {
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
- }), operators.catchError(function (errorResponse) {
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 (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(_this.urlWhoAmI) > -1)) {
52
- _this.router.navigate(['403']);
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,r){"use strict";var n=function(){function t(t){this.router=t,this.consoleDebug=!1,this.errorResponseUnknown="Unknown Error",this.errorResponseForbidden="Forbidden Error",this.urlWhoAmI="api/who-am-i",this.postHttpRequest=function(){}}return t.prototype.intercept=function(t,n){var o=this;return n.handle(t).pipe(r.map((function(t){if(t instanceof e.HttpResponse){if(200===t.status||204===t.status)return o.postHttpRequest(),t;if(200!==t.status){var s={status:t.status,message:t.statusText};throw o.consoleDebug&&console.error("[ErrorWS]: ",s),s}}return t})),r.catchError((function(t){o.consoleDebug&&console.error("[Fatal]: ",t);var e={status:t.status,message:""};return 0===t.status&&(e.message=o.errorResponseUnknown),401===t.status&&(e.message=t.error?t.error:o.errorResponseForbidden),(403===t.status||t.url&&t.url.indexOf(o.urlWhoAmI)>-1)&&o.router.navigate(["403"]),o.postHttpRequest(),s.throwError(e)})))},t}(),o=function(t,s){var n=this;this.http=t,this.sanitizer=s,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 s in e)null!=s&&(t=t.replace("{"+s+"}",e[s]));return t},this.authenticate=function(t,s,o){var i=btoa(s+":"+o),a=new e.HttpHeaders({authorization:"Basic "+i});return n.http.get(t,{headers:a,withCredentials:!0}).pipe(r.take(1),r.share())},this.logout=function(t){return n.http.delete(t,n.setOptions()).pipe(r.take(1),r.share())},this.get=function(t,e,s){return t=n.setUrlParams(t,e),n.http.get(t,n.setOptions(s))},this.delete=function(t,e,s){return t=n.setUrlParams(t,e),n.http.delete(t,n.setOptions(s))},this.post=function(t,e,s,r){return t=n.setUrlParams(t,s),n.http.post(t,e,n.setOptions(r))},this.put=function(t,e,s,r){return t=n.setUrlParams(t,s),n.http.put(t,e,n.setOptions(r))},this.patch=function(t,e,s,r){return t=n.setUrlParams(t,s),n.http.patch(t,e,n.setOptions(r))},this.setFileOptions=function(t,e){return Object.assign(Object.assign({},n.setOptions(e)),{headers:n.setHeaders(t),responseType:"blob"})},this.getFile=function(t,e,s,o){return e=n.setUrlParams(e,s),n.http.get(e,n.setFileOptions(t,o)).pipe(r.map((function(e){var s=new Blob([e],{type:t}),r=URL.createObjectURL(s);return n.sanitizer.bypassSecurityTrustResourceUrl(r)})))},this.postFile=function(t,e,s,r,o){return e=n.setUrlParams(e,r),n.http.post(e,s,n.setFileOptions(t,o))},this.putFile=function(t,e,s,r,o){return e=n.setUrlParams(e,r),n.http.put(e,s,n.setFileOptions(t,o))},this.patchFile=function(t,e,s,r,o){return e=n.setUrlParams(e,r),n.http.patch(e,s,n.setFileOptions(t,o))}};t.VonRestInterceptorService=n,t.VonRestService=o,Object.defineProperty(t,"__esModule",{value:!0})}));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLWVycm9yLXJlc3QtaW50ZXJjZXB0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1yZXN0LXNlcnZpY2Uvc3JjLyIsInNvdXJjZXMiOlsibGliL21vZGVsL3Zvbi1lcnJvci1yZXN0LWludGVyY2VwdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFZvbkVycm9yUmVzdEludGVyY2VwdG9yTW9kZWwge1xuICBzdGF0dXM6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuIl19
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.postHttpRequest = () => {
12
- };
13
- }
14
- intercept(request, next) {
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
- }), catchError((errorResponse) => {
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 (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {
48
- this.router.navigate(['403']);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9uLXJlc3QtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXJlc3Qtc2VydmljZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdm9uLXJlc3QtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTJFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdILE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxNQUFNLE9BQWdCLHlCQUF5QjtJQU83QyxZQUNZLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTmhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHlCQUFvQixHQUFHLGVBQWUsQ0FBQztRQUN2QywyQkFBc0IsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxjQUFTLEdBQUcsY0FBYyxDQUFDO1FBb0QzQixvQkFBZSxHQUFHLEdBQUcsRUFBRTtRQUNqQyxDQUFDLENBQUE7SUFqREcsQ0FBQztJQUVMLFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBRTlCLEdBQUcsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUM1QixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQ2pDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ2hELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtvQkFDeEIsTUFBTSxLQUFLLEdBQWlDO3dCQUMxQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07d0JBQ3BCLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVTtxQkFDMUIsQ0FBQztvQkFDRixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7d0JBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO3FCQUNyQztvQkFDRCxNQUFNLEtBQUssQ0FBQztpQkFDYjthQUNGO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsRUFFRixVQUFVLENBQUMsQ0FBQyxhQUFnQyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUMzQztZQUNELE1BQU0sS0FBSyxHQUFpQztnQkFDMUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO2dCQUM1QixPQUFPLEVBQUUsRUFBRTthQUNaLENBQUM7WUFDRixJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUM5QixLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQzthQUMzQztZQUNELElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7Z0JBQ2hDLEtBQUssQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2FBQ3pGO1lBQ0QsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMvQjtZQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUtGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhhbmRsZXIsIEh0dHBJbnRlcmNlcHRvciwgSHR0cFJlcXVlc3QsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWb25FcnJvclJlc3RJbnRlcmNlcHRvck1vZGVsIH0gZnJvbSAnLi9tb2RlbC92b24tZXJyb3ItcmVzdC1pbnRlcmNlcHRvci5tb2RlbCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWb25SZXN0SW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcm90ZWN0ZWQgY29uc29sZURlYnVnID0gZmFsc2U7XG4gIHByb3RlY3RlZCBlcnJvclJlc3BvbnNlVW5rbm93biA9ICdVbmtub3duIEVycm9yJztcbiAgcHJvdGVjdGVkIGVycm9yUmVzcG9uc2VGb3JiaWRkZW4gPSAnRm9yYmlkZGVuIEVycm9yJztcbiAgcHJvdGVjdGVkIHVybFdob0FtSSA9ICdhcGkvd2hvLWFtLWknO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlclxuICApIHsgfVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcblxuICAgICAgbWFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gMjAwIHx8IGV2ZW50LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICB0aGlzLnBvc3RIdHRwUmVxdWVzdCgpO1xuICAgICAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXZlbnQuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yOiBWb25FcnJvclJlc3RJbnRlcmNlcHRvck1vZGVsID0ge1xuICAgICAgICAgICAgICBzdGF0dXM6IGV2ZW50LnN0YXR1cyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZXZlbnQuc3RhdHVzVGV4dFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnNvbGVEZWJ1Zykge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbRXJyb3JXU106ICcsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9KSxcblxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3JSZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uc29sZURlYnVnKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW0ZhdGFsXTogJywgZXJyb3JSZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXJyb3I6IFZvbkVycm9yUmVzdEludGVyY2VwdG9yTW9kZWwgPSB7XG4gICAgICAgICAgc3RhdHVzOiBlcnJvclJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICBtZXNzYWdlOiAnJ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgICBlcnJvci5tZXNzYWdlID0gdGhpcy5lcnJvclJlc3BvbnNlVW5rbm93bjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBlcnJvclJlc3BvbnNlLmVycm9yID8gZXJyb3JSZXNwb25zZS5lcnJvciA6IHRoaXMuZXJyb3JSZXNwb25zZUZvcmJpZGRlbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JSZXNwb25zZS5zdGF0dXMgPT09IDQwMyB8fCAoZXJyb3JSZXNwb25zZS51cmwgJiYgZXJyb3JSZXNwb25zZS51cmwuaW5kZXhPZih0aGlzLnVybFdob0FtSSkgPiAtMSkpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJzQwMyddKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvc3RIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcG9zdEh0dHBSZXF1ZXN0ID0gKCkgPT4ge1xuICB9XG5cbn1cbiJdfQ==
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.postHttpRequest = () => {
13
- };
14
- }
15
- intercept(request, next) {
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
- }), catchError((errorResponse) => {
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 (errorResponse.status === 403 || (errorResponse.url && errorResponse.url.indexOf(this.urlWhoAmI) > -1)) {
49
- this.router.navigate(['403']);
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":"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"}
@@ -1,4 +1,5 @@
1
1
  export interface VonErrorRestInterceptorModel {
2
2
  status: number;
3
3
  message: string;
4
+ body?: any;
4
5
  }
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@von-development-studio/angular-rest-service",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Angular Rest Service wrapper.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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":22}]}],"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"}
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"}