@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
137 lines • 12.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable, Injector } from '@angular/core';
import { HttpErrorResponse } from '@angular/common/http';
import { MatSnackBar } from '@angular/material';
import { throwError } from 'rxjs';
import { catchError, retryWhen, scan } from 'rxjs/operators';
import { CoreService } from '../../core.service';
export class HttpErrorInterceptor {
/**
* @param {?} injector
*/
constructor(injector) {
this.config = injector.get(CoreService).getConfig();
try {
this.snackBar = injector.get(MatSnackBar);
}
catch (e) {
console.log(`No material snackbar can't be injected. You could "imports" the module "MatSnackBarModule" to use it.`);
}
}
/**
* @param {?} request
* @param {?} next
* @return {?}
*/
intercept(request, next) {
return next.handle(request).pipe(retryWhen((/**
* @param {?} errors
* @return {?}
*/
(errors) => this.handleRetry(errors))), catchError((/**
* @param {?} error
* @return {?}
*/
(error) => this.handleError(error))));
}
/**
* @private
* @param {?} errors
* @return {?}
*/
handleRetry(errors) {
return errors.pipe(scan((/**
* @param {?} accumulator
* @param {?} currentError
* @param {?} errorCount
* @return {?}
*/
(accumulator, currentError, errorCount) => {
/** @type {?} */
const allowNewRetry = (this.config.nbRetryOnNetworkError > 0 && errorCount < this.config.nbRetryOnNetworkError);
/** @type {?} */
const isNetworkError = [0, 408, 502, 503, 504].includes(currentError.status);
if (allowNewRetry && isNetworkError) {
return errorCount + 1;
}
else {
throw currentError;
}
}), 0));
}
/**
* @private
* @param {?} error
* @return {?}
*/
handleError(error) {
if (error instanceof HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
this.showError(error.error.message);
}
else if (error.status === 0) {
this.showError('La demande ne peut être complétée.');
}
else if (error.status === 400) {
if (error.error) {
this.showError(error.error.title ? error.error.title : error.error);
}
else if (error.statusText) {
this.showError(`${error.status} ${error.statusText}`);
}
else {
this.showError('La demande ne peut pas être complétée.');
}
}
else if (error.status === 404) {
this.showError('Le URL demandé n\'existe pas.');
}
else if (error.status === 500) {
this.showError('Erreur de communication.');
}
else if (error.status !== 200 && error.status !== 401) {
this.showError(`Erreur : ${error.status} ${error.statusText}`);
}
}
return throwError(error);
}
/**
* @private
* @param {?} message
* @return {?}
*/
showError(message) {
if (this.snackBar) {
this.snackBar.open(message, '', {
panelClass: ['error-snackbar'],
duration: 5000
});
}
else {
window.alert(message);
}
}
}
HttpErrorInterceptor.decorators = [
{ type: Injectable }
];
/** @nocollapse */
HttpErrorInterceptor.ctorParameters = () => [
{ type: Injector }
];
if (false) {
/**
* @type {?}
* @private
*/
HttpErrorInterceptor.prototype.snackBar;
/**
* @type {?}
* @private
*/
HttpErrorInterceptor.prototype.config;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvaW50ZXJjZXB0b3IvaHR0cC1lcnJvci1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFtQixpQkFBaUIsRUFBdUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHakQsTUFBTSxPQUFPLG9CQUFvQjs7OztJQUk3QixZQUNJLFFBQWtCO1FBRWxCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVwRCxJQUFJO1lBQ0EsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzdDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLHVHQUF1RyxDQUFDLENBQUM7U0FDeEg7SUFDTCxDQUFDOzs7Ozs7SUFFTSxTQUFTLENBQ1osT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDNUIsU0FBUzs7OztRQUFDLENBQUMsTUFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMs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LENBQUM7U0FDTjthQUFNO1lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7OztZQTdFSixVQUFVOzs7O1lBUlUsUUFBUTs7Ozs7OztJQVV6Qix3Q0FBOEI7Ozs7O0lBQzlCLHNDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgcmV0cnlXaGVuLCBzY2FuIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NsYXNzZXMvY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXI7XG4gICAgcHJpdmF0ZSBjb25maWc6IENvbmZpZ3VyYXRpb247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gaW5qZWN0b3IuZ2V0KENvcmVTZXJ2aWNlKS5nZXRDb25maWcoKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5zbmFja0JhciA9IGluamVjdG9yLmdldChNYXRTbmFja0Jhcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBObyBtYXRlcmlhbCBzbmFja2JhciBjYW4ndCBiZSBpbmplY3RlZC4gWW91IGNvdWxkIFwiaW1wb3J0c1wiIHRoZSBtb2R1bGUgXCJNYXRTbmFja0Jhck1vZHVsZVwiIHRvIHVzZSBpdC5gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpbnRlcmNlcHQoXG4gICAgICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgICAgIG5leHQ6IEh0dHBIYW5kbGVyLFxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICAgICAgICByZXRyeVdoZW4oKGVycm9yczogT2JzZXJ2YWJsZTxhbnk+KSA9PiB0aGlzLmhhbmRsZVJldHJ5KGVycm9ycykpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVSZXRyeShlcnJvcnM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiBlcnJvcnMucGlwZShcbiAgICAgICAgICAgIHNjYW4oKGFjY3VtdWxhdG9yOiBhbnksIGN1cnJlbnRFcnJvcjogYW55LCBlcnJvckNvdW50OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbGxvd05ld1JldHJ5ID0gKHRoaXMuY29uZmlnLm5iUmV0cnlPbk5ldHdvcmtFcnJvciA+IDAgJiYgZXJyb3JDb3VudCA8IHRoaXMuY29uZmlnLm5iUmV0cnlPbk5ldHdvcmtFcnJvcik7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOZXR3b3JrRXJyb3IgPSBbMCwgNDA4LCA1MDIsIDUwMywgNTA0XS5pbmNsdWRlcyhjdXJyZW50RXJyb3Iuc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgIGlmIChhbGxvd05ld1JldHJ5ICYmIGlzTmV0d29ya0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvckNvdW50ICsgMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjdXJyZW50RXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBPYnNlcnZhYmxlPG5ldmVyPiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoZXJyb3IuZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKCdMYSBkZW1hbmRlIG5lIHBldXQgw6p0cmUgY29tcGzDqXTDqWUuJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKGVycm9yLmVycm9yLnRpdGxlID8gZXJyb3IuZXJyb3IudGl0bGUgOiBlcnJvci5lcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5zdGF0dXNUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKGAke2Vycm9yLnN0YXR1c30gJHtlcnJvci5zdGF0dXNUZXh0fWApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKCdMYSBkZW1hbmRlIG5lIHBldXQgcGFzIMOqdHJlIGNvbXBsw6l0w6llLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcignTGUgVVJMIGRlbWFuZMOpIG5cXCdleGlzdGUgcGFzLicpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5zdGF0dXMgPT09IDUwMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKCdFcnJldXIgZGUgY29tbXVuaWNhdGlvbi4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzICE9PSAyMDAgJiYgZXJyb3Iuc3RhdHVzICE9PSA0MDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcihgRXJyZXVyIDogJHtlcnJvci5zdGF0dXN9ICR7ZXJyb3Iuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc25hY2tCYXIpIHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAnJywge1xuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnZXJyb3Itc25hY2tiYXInXSxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogNTAwMFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3aW5kb3cuYWxlcnQobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=