UNPKG

ehandler

Version:

Exception handler for Angular Applications

91 lines (90 loc) 10 kB
/** * @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