ehandler
Version:
Exception handler for Angular Applications
84 lines (83 loc) • 7.49 kB
JavaScript
/**
* @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