UNPKG

ehandler

Version:

Exception handler for Angular Applications

84 lines (83 loc) 7.49 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Inject, Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { catchError } from 'rxjs/operators'; export class HookService { /** * @param {?} http * @param {?} config */ constructor(http, config) { this.http = http; this.config = config; } /** * Send Message * @param {?} payload * @return {?} */ sendMessage(payload) { this.http.post(this.config.hook, payload, { observe: 'response', responseType: 'text' }).subscribe(response => { console.info('Message sent'); }); } /** * Send Exception to hook * @param {?} error * @param {?=} couse * @return {?} */ exceptionNotify(error, couse = '') { /** @type {?} */ const status = error.status ? error.status : 'Application Error'; /** * * Error Payload @type {?} */ const payload = { text: '--------------------------[ ' + status + ' ]--------------------------', attachments: [ { author_name: 'Cause: ' + couse + '\nURL: ' + window.location.href, title: 'Message: ' + error.message, text: 'Date: ' + new Date() + '\nUserAgent: ' + navigator.userAgent + '\n---------------------------------------------------------' } ] }; if (!this.bugged) { /** @type {?} */ const headers = new HttpHeaders({ 'Content-Type': 'text/plain' }); this.http.post(this.config.hook, JSON.stringify(payload), { observe: 'response', responseType: 'text', headers }) .pipe(catchError(e => { this.bugged = true; console.log('Hook stopped working'); throw e; })) .subscribe(response => { console.log('Exception Sent'); }); } } } HookService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ HookService.ctorParameters = () => [ { type: HttpClient }, { type: undefined, decorators: [{ type: Inject, args: ['configurations',] }] } ]; function HookService_tsickle_Closure_declarations() { /** @type {?} */ HookService.prototype.bugged; /** @type {?} */ HookService.prototype.http; /** @type {?} */ HookService.prototype.config; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZWhhbmRsZXIvIiwic291cmNlcyI6WyJsaWIvaG9vay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBQyxVQUFVLEVBQU0sTUFBTSxnQkFBZ0IsQ0FBQztBQUkvQyxNQUFNOzs7OztJQUNKLFlBQW9CLElBQWdCLEVBQW9DLE1BQWM7UUFBbEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFvQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQUk7Ozs7OztJQUsxRixXQUFXLENBQUMsT0FBWTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBRSxRQUFRLENBQUMsRUFBRTtZQUMzRyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlCLENBQUMsQ0FBQztLQUNKOzs7Ozs7O0lBS0QsZUFBZSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRTs7UUFDL0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7Ozs7UUFJakUsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUUsOEJBQThCLEdBQUcsTUFBTSxHQUFHLDhCQUE4QjtZQUM5RSxXQUFXLEVBQUU7Z0JBQ1g7b0JBQ0UsV0FBVyxFQUFFLFNBQVMsR0FBRyxLQUFLLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtvQkFDakUsS0FBSyxFQUFFLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTztvQkFDbEMsSUFBSSxFQUFFLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxHQUFHLGVBQWUsR0FBRyxTQUFTLENBQUMsU0FBUzt3QkFDbkUsNkRBQTZEO2lCQUM5RDthQUNGO1NBQ0YsQ0FBQztRQUNGLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7O1lBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUM5QixjQUFjLEVBQUUsWUFBWTthQUM3QixDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFDO2lCQUM1RyxJQUFJLENBQ0gsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxDQUFDO2FBQ1QsQ0FBQyxDQUNIO2lCQUNBLFNBQVMsQ0FBRSxRQUFRLENBQUMsRUFBRTtnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQy9CLENBQUMsQ0FBQztTQUNOO0tBRUY7OztZQWxERixVQUFVOzs7O1lBSkgsVUFBVTs0Q0FPdUIsTUFBTSxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi9jb25zdC9jb25maWcnO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5cclxuZXhwb3J0IGNsYXNzIEhvb2tTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoJ2NvbmZpZ3VyYXRpb25zJykgcHJpdmF0ZSBjb25maWc6IENvbmZpZykge31cclxuICBwcml2YXRlIGJ1Z2dlZDogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBTZW5kIE1lc3NhZ2VcclxuICAgKi9cclxuICBzZW5kTWVzc2FnZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLmhvb2ssIHBheWxvYWQsIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICd0ZXh0J30pLnN1YnNjcmliZSggcmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zb2xlLmluZm8oJ01lc3NhZ2Ugc2VudCcpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiAgU2VuZCBFeGNlcHRpb24gdG8gaG9va1xyXG4gICAqL1xyXG4gIGV4Y2VwdGlvbk5vdGlmeShlcnJvciwgY291c2UgPSAnJykge1xyXG4gICAgY29uc3Qgc3RhdHVzID0gZXJyb3Iuc3RhdHVzID8gZXJyb3Iuc3RhdHVzIDogJ0FwcGxpY2F0aW9uIEVycm9yJztcclxuICAgIC8qKlxyXG4gICAgICogRXJyb3IgUGF5bG9hZFxyXG4gICAgICovXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICB0ZXh0OiAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bICcgKyBzdGF0dXMgKyAnIF0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsXHJcbiAgICAgIGF0dGFjaG1lbnRzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYXV0aG9yX25hbWU6ICdDYXVzZTogJyArIGNvdXNlICsgJ1xcblVSTDogJyArIHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxyXG4gICAgICAgICAgdGl0bGU6ICdNZXNzYWdlOiAnICsgZXJyb3IubWVzc2FnZSxcclxuICAgICAgICAgIHRleHQ6ICdEYXRlOiAnICsgbmV3IERhdGUoKSArICdcXG5Vc2VyQWdlbnQ6ICcgKyBuYXZpZ2F0b3IudXNlckFnZW50ICtcclxuICAgICAgICAgICdcXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nXHJcbiAgICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gICAgaWYgKCF0aGlzLmJ1Z2dlZCkge1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQvcGxhaW4nXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLmhvb2ssIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAndGV4dCcsIGhlYWRlcnN9KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcihlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5idWdnZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnSG9vayBzdG9wcGVkIHdvcmtpbmcnKTtcclxuICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeGNlcHRpb24gU2VudCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbn1cclxuIl19