From 558dbddeb82028eab7a7a6cf2fa0d043043afe83 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 9 Aug 2022 14:35:57 -0400 Subject: [PATCH] Switch KubeJsonApi.forCluster to be injectable but do not use Signed-off-by: Sebastian Malton --- ...te-kube-json-api-for-cluster.injectable.ts | 33 +++++++++++++++++++ src/common/k8s-api/kube-json-api.ts | 16 --------- 2 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 src/common/k8s-api/create-kube-json-api-for-cluster.injectable.ts diff --git a/src/common/k8s-api/create-kube-json-api-for-cluster.injectable.ts b/src/common/k8s-api/create-kube-json-api-for-cluster.injectable.ts new file mode 100644 index 0000000000..1af9e12fa9 --- /dev/null +++ b/src/common/k8s-api/create-kube-json-api-for-cluster.injectable.ts @@ -0,0 +1,33 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import { apiKubePrefix, isDebugging } from "../vars"; +import { apiBaseInjectionToken } from "./api-base"; +import { KubeJsonApi } from "./kube-json-api"; + +export type CreateKubeJsonApiForCluster = (clusterId: string) => KubeJsonApi; + +const createKubeJsonApiForClusterInjectable = getInjectable({ + id: "create-kube-json-api-for-cluster", + instantiate: (di): CreateKubeJsonApiForCluster => { + const apiBase = di.inject(apiBaseInjectionToken); + + return (clusterId) => { + const url = new URL(apiBase.config.serverAddress); + + return new KubeJsonApi({ + serverAddress: apiBase.config.serverAddress, + apiBase: apiKubePrefix, + debug: isDebugging, + }, { + headers: { + "Host": `${clusterId}.localhost:${url.port}`, + }, + }); + }; + }, +}); + +export default createKubeJsonApiForClusterInjectable; diff --git a/src/common/k8s-api/kube-json-api.ts b/src/common/k8s-api/kube-json-api.ts index 2624f030c8..16ca5cda70 100644 --- a/src/common/k8s-api/kube-json-api.ts +++ b/src/common/k8s-api/kube-json-api.ts @@ -6,8 +6,6 @@ import type { JsonApiData, JsonApiError } from "./json-api"; import { JsonApi } from "./json-api"; import type { Response } from "node-fetch"; -import { apiKubePrefix, isDebugging } from "../vars"; -import { apiBase } from "./api-base"; import type { KubeJsonApiObjectMetadata } from "./kube-object"; export interface KubeJsonApiListMetadata { @@ -47,20 +45,6 @@ export interface KubeJsonApiError extends JsonApiError { } export class KubeJsonApi extends JsonApi { - static forCluster(clusterId: string): KubeJsonApi { - const url = new URL(apiBase.config.serverAddress); - - return new this({ - serverAddress: apiBase.config.serverAddress, - apiBase: apiKubePrefix, - debug: isDebugging, - }, { - headers: { - "Host": `${clusterId}.localhost:${url.port}`, - }, - }); - } - protected parseError(error: KubeJsonApiError | string, res: Response): string[] { if (typeof error === "string") { return [error];