UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

60 lines 8.54 kB
import { Injectable } from '@angular/core'; import { throwError, catchError } from 'rxjs'; import { EMPTY, FALSE, NOTIFY_ON_ERROR_HEADER, } from '../core/public-api'; import { isK8sErrorStatus } from './helpers'; import { NotificationUtilService, } from './notification-util.service'; import * as i0 from "@angular/core"; import * as i1 from "./notification-util.service"; export const WRITABLE_METHODS = ['delete', 'patch', 'post', 'put']; export class ResourceErrorInterceptor { constructor(notificationUtil) { this.notificationUtil = notificationUtil; } intercept(req, next) { // Maybe used later in custom `catchError` req.requestAt = Date.now(); let notifyOnError = this.notifyOnError(req); if (notifyOnError || req.headers.has(NOTIFY_ON_ERROR_HEADER)) { const notifyOnErrorHeader = req.headers.get(NOTIFY_ON_ERROR_HEADER); req = req.clone({ headers: req.headers.delete(NOTIFY_ON_ERROR_HEADER), }); const skipNotifyOnError = notifyOnErrorHeader != null && [EMPTY, FALSE].includes(notifyOnErrorHeader); if (skipNotifyOnError) { notifyOnError = false; } else { if (!notifyOnError) { notifyOnError = true; } } } return next.handle(req).pipe(catchError((err) => { console.error(err); if (notifyOnError) { this.notificationUtil.notify(req, err); } return throwError(() => isK8sErrorStatus(err.error) ? { ...err.error, __origin__: err, __req__: req, } : { ...err, __req__: req, }); })); } notifyOnError(req) { return (WRITABLE_METHODS.includes(req.method.toLowerCase()) && !req.url.endsWith('/v1/selfsubjectaccessreviews')); } static { this.ɵfac = function ResourceErrorInterceptor_Factory(t) { return new (t || ResourceErrorInterceptor)(i0.ɵɵinject(i1.NotificationUtilService)); }; } static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ResourceErrorInterceptor, factory: ResourceErrorInterceptor.ɵfac }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceErrorInterceptor, [{ type: Injectable }], () => [{ type: i1.NotificationUtilService }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvbm90aWZpY2F0aW9uL3Jlc291cmNlLWVycm9yLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUVMLEtBQUssRUFDTCxLQUFLLEVBQ0wsc0JBQXNCLEdBQ3ZCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFFTCx1QkFBdUIsR0FDeEIsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRXJDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFVLENBQUM7QUFTNUUsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUE2QixnQkFBeUM7UUFBekMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtJQUFHLENBQUM7SUFFMUUsU0FBUyxDQUFDLEdBQTRCLEVBQUUsSUFBaUI7UUFDdkQsMENBQTBDO1FBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTNCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUMsSUFBSSxhQUFhLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUNwRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDZCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUM7YUFDcEQsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxpQkFBaUIsR0FDckIsbUJBQW1CLElBQUksSUFBSTtnQkFDM0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDL0MsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ25CLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFCLFVBQVUsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRTtZQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FDckIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDekIsQ0FBQyxDQUFDO29CQUNFLEdBQUcsR0FBRyxDQUFDLEtBQUs7b0JBQ1osVUFBVSxFQUFFLEdBQUc7b0JBQ2YsT0FBTyxFQUFFLEdBQUc7aUJBQ2I7Z0JBQ0gsQ0FBQyxDQUFDO29CQUNFLEdBQUcsR0FBRztvQkFDTixPQUFPLEVBQUUsR0FBRztpQkFDYixDQUNOLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUE0QjtRQUNoRCxPQUFPLENBQ0wsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFvQixDQUFDO1lBQ3JFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsOEJBQThCLENBQUMsQ0FDbEQsQ0FBQztJQUNKLENBQUM7eUZBckRVLHdCQUF3Qjt1RUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3Qjs7aUZBQXhCLHdCQUF3QjtjQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgbm90aWZpY2F0aW9uXG4gKi9cblxuaW1wb3J0IHtcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwSW50ZXJjZXB0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRocm93RXJyb3IsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU3RhdHVzLFxuICBFTVBUWSxcbiAgRkFMU0UsXG4gIE5PVElGWV9PTl9FUlJPUl9IRUFERVIsXG59IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IGlzSzhzRXJyb3JTdGF0dXMgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTm90aWZpY2F0aW9uSHR0cFJlcXVlc3QsXG4gIE5vdGlmaWNhdGlvblV0aWxTZXJ2aWNlLFxufSBmcm9tICcuL25vdGlmaWNhdGlvbi11dGlsLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgV1JJVEFCTEVfTUVUSE9EUyA9IFsnZGVsZXRlJywgJ3BhdGNoJywgJ3Bvc3QnLCAncHV0J10gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFdyaXRhYmxlTWV0aG9kID0gKHR5cGVvZiBXUklUQUJMRV9NRVRIT0RTKVtudW1iZXJdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXR1c0Vycm9yUmVzcG9uc2UgZXh0ZW5kcyBTdGF0dXMge1xuICBfX29yaWdpbl9fOiBIdHRwRXJyb3JSZXNwb25zZTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlc291cmNlRXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uVXRpbDogTm90aWZpY2F0aW9uVXRpbFNlcnZpY2UpIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogTm90aWZpY2F0aW9uSHR0cFJlcXVlc3QsIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgLy8gTWF5YmUgdXNlZCBsYXRlciBpbiBjdXN0b20gYGNhdGNoRXJyb3JgXG4gICAgcmVxLnJlcXVlc3RBdCA9IERhdGUubm93KCk7XG5cbiAgICBsZXQgbm90aWZ5T25FcnJvciA9IHRoaXMubm90aWZ5T25FcnJvcihyZXEpO1xuXG4gICAgaWYgKG5vdGlmeU9uRXJyb3IgfHwgcmVxLmhlYWRlcnMuaGFzKE5PVElGWV9PTl9FUlJPUl9IRUFERVIpKSB7XG4gICAgICBjb25zdCBub3RpZnlPbkVycm9ySGVhZGVyID0gcmVxLmhlYWRlcnMuZ2V0KE5PVElGWV9PTl9FUlJPUl9IRUFERVIpO1xuICAgICAgcmVxID0gcmVxLmNsb25lKHtcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMuZGVsZXRlKE5PVElGWV9PTl9FUlJPUl9IRUFERVIpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBza2lwTm90aWZ5T25FcnJvciA9XG4gICAgICAgIG5vdGlmeU9uRXJyb3JIZWFkZXIgIT0gbnVsbCAmJlxuICAgICAgICBbRU1QVFksIEZBTFNFXS5pbmNsdWRlcyhub3RpZnlPbkVycm9ySGVhZGVyKTtcbiAgICAgIGlmIChza2lwTm90aWZ5T25FcnJvcikge1xuICAgICAgICBub3RpZnlPbkVycm9yID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIW5vdGlmeU9uRXJyb3IpIHtcbiAgICAgICAgICBub3RpZnlPbkVycm9yID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgaWYgKG5vdGlmeU9uRXJyb3IpIHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblV0aWwubm90aWZ5KHJlcSwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PlxuICAgICAgICAgIGlzSzhzRXJyb3JTdGF0dXMoZXJyLmVycm9yKVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgLi4uZXJyLmVycm9yLFxuICAgICAgICAgICAgICAgIF9fb3JpZ2luX186IGVycixcbiAgICAgICAgICAgICAgICBfX3JlcV9fOiByZXEsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIC4uLmVycixcbiAgICAgICAgICAgICAgICBfX3JlcV9fOiByZXEsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBub3RpZnlPbkVycm9yKHJlcTogTm90aWZpY2F0aW9uSHR0cFJlcXVlc3QpIHtcbiAgICByZXR1cm4gKFxuICAgICAgV1JJVEFCTEVfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kLnRvTG93ZXJDYXNlKCkgYXMgV3JpdGFibGVNZXRob2QpICYmXG4gICAgICAhcmVxLnVybC5lbmRzV2l0aCgnL3YxL3NlbGZzdWJqZWN0YWNjZXNzcmV2aWV3cycpXG4gICAgKTtcbiAgfVxufVxuIl19