ehandler
Version:
Exception handler for Angular Applications
101 lines (100 loc) • 8.11 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';
var HookService = /** @class */ (function () {
function HookService(http, config) {
this.http = http;
this.config = config;
}
/**
* Send Message
*/
/**
* Send Message
* @param {?} payload
* @return {?}
*/
HookService.prototype.sendMessage = /**
* Send Message
* @param {?} payload
* @return {?}
*/
function (payload) {
this.http.post(this.config.hook, payload, { observe: 'response', responseType: 'text' }).subscribe(function (response) {
console.info('Message sent');
});
};
/**
* Send Exception to hook
*/
/**
* Send Exception to hook
* @param {?} error
* @param {?=} couse
* @return {?}
*/
HookService.prototype.exceptionNotify = /**
* Send Exception to hook
* @param {?} error
* @param {?=} couse
* @return {?}
*/
function (error, couse) {
var _this = this;
if (couse === void 0) { couse = ''; }
/** @type {?} */
var status = error.status ? error.status : 'Application Error';
/** *
* Error Payload
@type {?} */
var 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 {?} */
var headers = new HttpHeaders({
'Content-Type': 'text/plain'
});
this.http.post(this.config.hook, JSON.stringify(payload), { observe: 'response', responseType: 'text', headers: headers })
.pipe(catchError(function (e) {
_this.bugged = true;
console.log('Hook stopped working');
throw e;
}))
.subscribe(function (response) {
console.log('Exception Sent');
});
}
};
HookService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
HookService.ctorParameters = function () { return [
{ type: HttpClient },
{ type: undefined, decorators: [{ type: Inject, args: ['configurations',] }] }
]; };
return HookService;
}());
export { HookService };
function HookService_tsickle_Closure_declarations() {
/** @type {?} */
HookService.prototype.bugged;
/** @type {?} */
HookService.prototype.http;
/** @type {?} */
HookService.prototype.config;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZWhhbmRsZXIvIiwic291cmNlcyI6WyJsaWIvaG9vay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBQyxVQUFVLEVBQU0sTUFBTSxnQkFBZ0IsQ0FBQzs7SUFLN0MscUJBQW9CLElBQWdCLEVBQW9DLE1BQWM7UUFBbEUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFvQyxXQUFNLEdBQU4sTUFBTSxDQUFRO0tBQUk7SUFFMUY7O09BRUc7Ozs7OztJQUNILGlDQUFXOzs7OztJQUFYLFVBQVksT0FBWTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBRSxVQUFBLFFBQVE7WUFDeEcsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUM5QixDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHOzs7Ozs7O0lBQ0gscUNBQWU7Ozs7OztJQUFmLFVBQWdCLEtBQUssRUFBRSxLQUFVO1FBQWpDLGlCQWlDQztRQWpDc0Isc0JBQUEsRUFBQSxVQUFVOztRQUMvQixJQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQzs7OztRQUlqRSxJQUFNLE9BQU8sR0FBRztZQUNkLElBQUksRUFBRSw4QkFBOEIsR0FBRyxNQUFNLEdBQUcsOEJBQThCO1lBQzlFLFdBQVcsRUFBRTtnQkFDWDtvQkFDRSxXQUFXLEVBQUUsU0FBUyxHQUFHLEtBQUssR0FBRyxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO29CQUNqRSxLQUFLLEVBQUUsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPO29CQUNsQyxJQUFJLEVBQUUsUUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsZUFBZSxHQUFHLFNBQVMsQ0FBQyxTQUFTO3dCQUNuRSw2REFBNkQ7aUJBQzlEO2FBQ0Y7U0FDRixDQUFDO1FBQ0YsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7WUFDakIsSUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQzlCLGNBQWMsRUFBRSxZQUFZO2FBQzdCLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxTQUFBLEVBQUMsQ0FBQztpQkFDNUcsSUFBSSxDQUNILFVBQVUsQ0FBQyxVQUFBLENBQUM7Z0JBQ1YsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxDQUFDLENBQUM7YUFDVCxDQUFDLENBQ0g7aUJBQ0EsU0FBUyxDQUFFLFVBQUEsUUFBUTtnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQy9CLENBQUMsQ0FBQztTQUNOO0tBRUY7O2dCQWxERixVQUFVOzs7O2dCQUpILFVBQVU7Z0RBT3VCLE1BQU0sU0FBQyxnQkFBZ0I7O3NCQVJoRTs7U0FPYSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuL2NvbnN0L2NvbmZpZyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcblxyXG5leHBvcnQgY2xhc3MgSG9va1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgQEluamVjdCgnY29uZmlndXJhdGlvbnMnKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7fVxyXG4gIHByaXZhdGUgYnVnZ2VkOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFNlbmQgTWVzc2FnZVxyXG4gICAqL1xyXG4gIHNlbmRNZXNzYWdlKHBheWxvYWQ6IGFueSkge1xyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWcuaG9vaywgcGF5bG9hZCwge29ic2VydmU6ICdyZXNwb25zZScsIHJlc3BvbnNlVHlwZTogJ3RleHQnfSkuc3Vic2NyaWJlKCByZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuaW5mbygnTWVzc2FnZSBzZW50Jyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqICBTZW5kIEV4Y2VwdGlvbiB0byBob29rXHJcbiAgICovXHJcbiAgZXhjZXB0aW9uTm90aWZ5KGVycm9yLCBjb3VzZSA9ICcnKSB7XHJcbiAgICBjb25zdCBzdGF0dXMgPSBlcnJvci5zdGF0dXMgPyBlcnJvci5zdGF0dXMgOiAnQXBwbGljYXRpb24gRXJyb3InO1xyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciBQYXlsb2FkXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHRleHQ6ICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVsgJyArIHN0YXR1cyArICcgXS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJyxcclxuICAgICAgYXR0YWNobWVudHM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBhdXRob3JfbmFtZTogJ0NhdXNlOiAnICsgY291c2UgKyAnXFxuVVJMOiAnICsgd2luZG93LmxvY2F0aW9uLmhyZWYsXHJcbiAgICAgICAgICB0aXRsZTogJ01lc3NhZ2U6ICcgKyBlcnJvci5tZXNzYWdlLFxyXG4gICAgICAgICAgdGV4dDogJ0RhdGU6ICcgKyBuZXcgRGF0ZSgpICsgJ1xcblVzZXJBZ2VudDogJyArIG5hdmlnYXRvci51c2VyQWdlbnQgK1xyXG4gICAgICAgICAgJ1xcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSdcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuYnVnZ2VkKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbidcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWcuaG9vaywgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksIHtvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICd0ZXh0JywgaGVhZGVyc30pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKGUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmJ1Z2dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdIb29rIHN0b3BwZWQgd29ya2luZycpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSggcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0V4Y2VwdGlvbiBTZW50Jyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxufVxyXG4iXX0=