ehandler
Version:
Exception handler for Angular Applications
91 lines (90 loc) • 10 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Inject, Injectable } from '@angular/core';
import { HttpResponse } from '@angular/common/http';
import { catchError, finalize, map } from 'rxjs/operators';
import { EHandlerService } from './ehandler.service';
export class EIntercepterService {
/**
* @param {?} config
* @param {?} eh
*/
constructor(config, eh) {
this.config = config;
this.eh = eh;
}
/**
* @param {?} req
* @param {?} next
* @return {?}
*/
intercept(req, next) {
return next.handle(req).pipe(map(event => {
if (event instanceof HttpResponse) {
/** @type {?} */
const requestData = event.body;
if (requestData) {
if (requestData.exception && requestData.exception.code) {
try {
if (this.config && this.config.logoutCodes && this.config.logoutCodes.indexOf(requestData.exception.code) !== -1) {
this.eh.logout();
}
else {
/** @type {?} */
const error = {
code: requestData.exception.code,
message: requestData.exception.message
};
this.eh.errorMSG(error.message, error.code);
this.eh.statusMessage(error);
}
}
catch (e) {
console.log('There was an error while trying to send message');
}
}
else if (requestData.error && requestData.error.code) {
try {
if (this.config && this.config.logoutCodes && this.config.logoutCodes.indexOf(requestData.error.code) !== -1) {
this.eh.logout();
}
else {
/** @type {?} */
const error = {
code: requestData.error.code,
message: requestData.error.message
};
this.eh.errorMSG(error.message, error.code);
this.eh.statusMessage(error);
}
}
catch (e) {
console.log('There was an error while trying to send message');
}
}
}
}
return event;
}), catchError(error => {
this.eh.handleError(error);
throw error;
}), finalize(() => { }));
}
}
EIntercepterService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
EIntercepterService.ctorParameters = () => [
{ type: undefined, decorators: [{ type: Inject, args: ['configurations',] }] },
{ type: EHandlerService }
];
function EIntercepterService_tsickle_Closure_declarations() {
/** @type {?} */
EIntercepterService.prototype.config;
/** @type {?} */
EIntercepterService.prototype.eh;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWludGVyY2VwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9laGFuZGxlci8iLCJzb3VyY2VzIjpbImxpYi9laW50ZXJjZXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUF1RCxZQUFZLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RyxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsTUFBTTs7Ozs7SUFDSixZQUE4QyxNQUFjLEVBQVUsRUFBbUI7UUFBM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWlCO0tBQUs7Ozs7OztJQUM5RixTQUFTLENBQ1AsR0FBcUIsRUFDckIsSUFBaUI7UUFFakIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixFQUFFLENBQUMsQ0FBQyxLQUFLLFlBQVksWUFBWSxDQUFDLENBQUMsQ0FBQzs7Z0JBQ2xDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN4RCxJQUFJLENBQUM7NEJBQ0gsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQ2xILElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7NkJBQ2xCOzRCQUFDLElBQUksQ0FBQyxDQUFDOztnQ0FDTixNQUFNLEtBQUssR0FBRztvQ0FDWixJQUFJLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJO29DQUNoQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPO2lDQUN2QyxDQUFBO2dDQUNELElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUM1QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDOUI7eUJBQ0Y7d0JBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO3lCQUNoRTtxQkFDRjtvQkFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQ3ZELElBQUksQ0FBQzs0QkFDSCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FBQztnQ0FDOUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs2QkFDbEI7NEJBQUMsSUFBSSxDQUFDLENBQUM7O2dDQUNOLE1BQU0sS0FBSyxHQUFHO29DQUNaLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUk7b0NBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU87aUNBQ25DLENBQUE7Z0NBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQzVDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDOzZCQUM5Qjt5QkFDRjt3QkFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs0QkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7eUJBQ2hFO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2QsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixNQUFNLEtBQUssQ0FBQztTQUNiLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLElBQUcsQ0FBQyxDQUNuQixDQUFDO0tBQ0g7OztZQXJERixVQUFVOzs7OzRDQUVJLE1BQU0sU0FBQyxnQkFBZ0I7WUFKOUIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi9jb25zdC9jb25maWcnO1xuaW1wb3J0IHtFSGFuZGxlclNlcnZpY2V9IGZyb20gJy4vZWhhbmRsZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFSW50ZXJjZXB0ZXJTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IoQEluamVjdCgnY29uZmlndXJhdGlvbnMnKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnLCBwcml2YXRlIGVoOiBFSGFuZGxlclNlcnZpY2UpIHsgfVxuICBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxuICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgcmVxdWVzdERhdGEgPSBldmVudC5ib2R5O1xuICAgICAgICAgIGlmIChyZXF1ZXN0RGF0YSkge1xuICAgICAgICAgICAgaWYgKHJlcXVlc3REYXRhLmV4Y2VwdGlvbiAmJiByZXF1ZXN0RGF0YS5leGNlcHRpb24uY29kZSkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5sb2dvdXRDb2RlcyAmJiB0aGlzLmNvbmZpZy5sb2dvdXRDb2Rlcy5pbmRleE9mKHJlcXVlc3REYXRhLmV4Y2VwdGlvbi5jb2RlKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVoLmxvZ291dCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogcmVxdWVzdERhdGEuZXhjZXB0aW9uLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcXVlc3REYXRhLmV4Y2VwdGlvbi5tZXNzYWdlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB0aGlzLmVoLmVycm9yTVNHKGVycm9yLm1lc3NhZ2UsIGVycm9yLmNvZGUpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5laC5zdGF0dXNNZXNzYWdlKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHRyeWluZyB0byBzZW5kIG1lc3NhZ2UnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0RGF0YS5lcnJvciAmJiByZXF1ZXN0RGF0YS5lcnJvci5jb2RlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmxvZ291dENvZGVzICYmIHRoaXMuY29uZmlnLmxvZ291dENvZGVzLmluZGV4T2YocmVxdWVzdERhdGEuZXJyb3IuY29kZSkgIT09IC0xICkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5laC5sb2dvdXQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHJlcXVlc3REYXRhLmVycm9yLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlcXVlc3REYXRhLmVycm9yLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuZWguZXJyb3JNU0coZXJyb3IubWVzc2FnZSwgZXJyb3IuY29kZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVoLnN0YXR1c01lc3NhZ2UoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgdHJ5aW5nIHRvIHNlbmQgbWVzc2FnZScpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuZWguaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pLFxuICAgICAgZmluYWxpemUoKCkgPT4ge30pXG4gICAgKTtcbiAgfVxufVxuIl19