From dd0ba16d454d099af2b27010337258309206bf8b Mon Sep 17 00:00:00 2001 From: Panu Horsmalahti Date: Thu, 21 Oct 2021 13:23:18 +0300 Subject: [PATCH] Make token to be a string or a function Signed-off-by: Panu Horsmalahti --- src/common/k8s-api/kube-api.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/common/k8s-api/kube-api.ts b/src/common/k8s-api/kube-api.ts index f29decdf26..eba7696938 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -22,6 +22,7 @@ // Base class for building all kubernetes apis import merge from "lodash/merge"; +import isFunction from "lodash/isfunction"; import { stringify } from "querystring"; import { apiKubePrefix, isDevelopment } from "../../common/vars"; import logger from "../../main/logger"; @@ -108,8 +109,7 @@ export interface IRemoteKubeApiConfig { skipTLSVerify?: boolean; } user: { - token?: string; - getToken?: () => string; + token?: string | (() => string); clientCertificateData?: string; clientKeyData?: string; } @@ -133,16 +133,14 @@ export function forCluster(cluster: ILocalKubeApiConfig, k }); } +const getToken = (token: string | (() => string)) => isFunction(token) ? token() : token; + export function forRemoteCluster(config: IRemoteKubeApiConfig, kubeClass: KubeObjectConstructor): KubeApi { const reqInit: RequestInit = {}; - if (config.user.token && config.user.getToken) { - throw new Error("Provide either user.token or user.getToken"); - } - - if (config.user.token || config.user.getToken) { + if (config.user.token) { reqInit.headers = { - "Authorization": `Bearer ${config.user.token ?? config.user.getToken()}` + "Authorization": `Bearer ${getToken(config.user.token)}` }; } @@ -172,10 +170,10 @@ export function forRemoteCluster(config: IRemoteKubeApiCon serverAddress: config.cluster.server, apiBase: "", debug: isDevelopment, - ...(config.user.getToken ? { + ...(config.user.token ? { getRequestOptions: () => ({ headers: { - "Authorization": `Bearer ${config.user.getToken()}` + "Authorization": `Bearer ${getToken(config.user.token)}` } }) } : {})