@alauda-fe/common
Version:
Alauda frontend team common codes.
47 lines (46 loc) • 1.82 kB
TypeScript
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs';
import { KubernetesResource, KubernetesResourceList } from '../core/public-api';
import { ClusterVersionService } from './cluster-version.service';
import { K8sResourceDefinition } from './types';
export declare abstract class ApiCompatibleInterceptor implements HttpInterceptor {
abstract matchUrl(req: string): MatchResult;
abstract responseAdapters: ResponseAdapter[];
abstract requestAdapters: RequestAdapter[];
protected clusterVersion: ClusterVersionService;
intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>>;
private executeRequestDowngrade;
private executeRequestBodyDowngrade;
private executeResponseBodyUpgrade;
}
interface Adapter {
clusterVersion: string;
httpMethods?: string[];
}
export interface ResponseAdapter extends Adapter {
bodyUpgrade: (body: unknown) => unknown;
}
export interface RequestAdapter extends Adapter {
bodyDowngrade?: (body: unknown) => unknown;
requestDowngrade?: (req: HttpRequest<unknown>) => HttpRequest<unknown>;
}
export interface MatchResult {
matched: boolean;
cluster?: string;
}
export declare function k8sApiMatcher(resourceType: string | K8sResourceDefinition): (url: string) => {
matched: boolean;
cluster: string;
} | {
matched: boolean;
cluster?: undefined;
};
export declare function k8sResourceOrList(mapper: (res: KubernetesResource) => KubernetesResource): (res: KubernetesResource | KubernetesResourceList) => KubernetesResource | {
items: KubernetesResource[];
metadata?: import("../core/public-api").ObjectMeta;
spec?: unknown;
status?: unknown;
kind?: string;
apiVersion?: string;
};
export {};