@alauda-fe/common
Version:
Alauda frontend team common codes.
60 lines • 8.54 kB
JavaScript
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