From e3ff52b0200d48d60f9e5581edc32422206353a2 Mon Sep 17 00:00:00 2001 From: "andreas.dinauer" Date: Thu, 6 Nov 2025 15:02:04 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20Fix=20backend=20routes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/LogRepo.ts | 2 +- classes/ResourceRepo.ts | 4 +-- components/monitorings/MonitoredResource.ts | 4 +-- components/monitorings/MonitoringConfig.ts | 2 +- components/pod/env/EnvVar.ts | 2 +- nuxt.config.ts | 7 ++++-- requests/deployments.ts | 4 +-- requests/ingresses.ts | 2 +- requests/login.ts | 2 +- requests/logs.ts | 2 +- requests/namespace.ts | 2 +- requests/nodes.ts | 7 +++--- requests/pod.ts | 28 +-------------------- requests/services.ts | 2 +- requests/user.ts | 8 +++--- utils/ApiConfig.ts | 12 +++++++++ 16 files changed, 39 insertions(+), 51 deletions(-) create mode 100644 utils/ApiConfig.ts diff --git a/classes/LogRepo.ts b/classes/LogRepo.ts index 03771f4..4f23b99 100644 --- a/classes/LogRepo.ts +++ b/classes/LogRepo.ts @@ -6,7 +6,7 @@ export class LogRepo listen(namespace: string, name: string, onReceive: (logs: Log[]) => void) { - const websocket = new WebSocket(StringUtils.format("ws://%s/api/logs/%s/%s", useRuntimeConfig().public.apiWsBase, namespace, name)); + const websocket = new WebSocket(StringUtils.format("%s/logs/%s/%s", ApiConfig.getWsBase(), namespace, name)); websocket.addEventListener('open', () => { console.info("Opened Websocket."); }) diff --git a/classes/ResourceRepo.ts b/classes/ResourceRepo.ts index 52a1b91..c9793ce 100644 --- a/classes/ResourceRepo.ts +++ b/classes/ResourceRepo.ts @@ -26,7 +26,7 @@ export class ResourceRepo listen(resource: string) { - const websocket = new WebSocket(StringUtils.format("%s/api/watch/%s/%s", useRuntimeConfig().public.apiWsBase, resource, this.getNamespace())); + const websocket = new WebSocket(StringUtils.format("%s/watch/%s/%s", ApiConfig.getWsBase(), resource, this.getNamespace())); websocket.addEventListener('open', () => { console.info("Opened Websocket."); }) @@ -122,7 +122,7 @@ export class ResourceRepo private refresh(resourceType: string) { const namespace = this.getNamespace(); - let url = StringUtils.format("%s/resources/%s", useRuntimeConfig().public.apiBase, resourceType); + let url = StringUtils.format("%s/resources/%s", ApiConfig.getHttpBase(), resourceType); if (namespace) { url = StringUtils.format("%s/%s", url, namespace); diff --git a/components/monitorings/MonitoredResource.ts b/components/monitorings/MonitoredResource.ts index cb2e005..de2d557 100644 --- a/components/monitorings/MonitoredResource.ts +++ b/components/monitorings/MonitoredResource.ts @@ -13,7 +13,7 @@ export class MonitoredResource static getMonitorings(monitoringId: string, onSuccess: (monitoredPod: MonitoredResource[]) => void) { - axios.get[]>(useRuntimeConfig().public.apiBase + '/monitorings/' + monitoringId + '/jobs') + axios.get[]>(StringUtils.format("%s/monitorings/%s/jobs", ApiConfig.getHttpBase(), monitoringId)) .then(response => { onSuccess(response.data) }); @@ -21,7 +21,7 @@ export class MonitoredResource static getNodeMonitorings(from: Date, to: Date, onSuccess: (monitoredPod: MonitoredResource[]) => void) { - axios.get[]>(useRuntimeConfig().public.apiBase + '/monitorings/nodes/jobs', { + axios.get[]>(ApiConfig.getHttpBase() + '/monitorings/nodes/jobs', { params: { from: from, to: to diff --git a/components/monitorings/MonitoringConfig.ts b/components/monitorings/MonitoringConfig.ts index 4c48a38..cec535f 100644 --- a/components/monitorings/MonitoringConfig.ts +++ b/components/monitorings/MonitoringConfig.ts @@ -11,7 +11,7 @@ export class VolumeMonitoringConfig static get(onSuccess: (monitorings: VolumeMonitoringConfig[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/monitorings') + axios.get(ApiConfig.getHttpBase() + '/monitorings') .then(response => { onSuccess(response.data) }); diff --git a/components/pod/env/EnvVar.ts b/components/pod/env/EnvVar.ts index 0253539..950abc6 100644 --- a/components/pod/env/EnvVar.ts +++ b/components/pod/env/EnvVar.ts @@ -9,7 +9,7 @@ export class EnvVar static get(namespace: string, name: string, onSuccess: (envVars: EnvVar[]) => void) { - const url = StringUtils.format('%s/pods/%s/%s/env', useRuntimeConfig().public.apiBase, namespace, name); + const url = StringUtils.format('%s/pods/%s/%s/env', ApiConfig.getHttpBase(), namespace, name); axios.get(url) .then((response) => { onSuccess(response.data); diff --git a/nuxt.config.ts b/nuxt.config.ts index 88dffe9..09a2420 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -12,8 +12,11 @@ export default defineNuxtConfig({ runtimeConfig: { public: { - apiBase: StringUtils.format("%s://%s", process.env.NUXT_PUBLIC_API_SCHEMA as string, process.env.NUXT_PUBLIC_API_HOST as string), - apiWsBase: StringUtils.format("%s://%s", process.env.NUXT_PUBLIC_API_WS_SCHEMA as string, process.env.NUXT_PUBLIC_API_HOST as string) + api: { + host: process.env.NUXT_PUBLIC_API_HOST, + schema: process.env.NUXT_PUBLIC_API_SCHEMA, + wsSchema: process.env.NUXT_PUBLIC_API_WS_SCHEMA + } } }, diff --git a/requests/deployments.ts b/requests/deployments.ts index 26a43e8..13e5901 100644 --- a/requests/deployments.ts +++ b/requests/deployments.ts @@ -3,7 +3,7 @@ import type { Deployment } from "~/classes/Deployment"; export function getDeployments(namespace: string | undefined, onSuccess: (deployments: Deployment[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/deployments', { + axios.get(ApiConfig.getHttpBase() + '/deployments', { headers: { Authorization: "Bearer " + requireToken() }, @@ -25,7 +25,7 @@ export function rescaleDeployment(deployment: Deployment | undefined, replicaCou { throw new Error("Name or namespace cannot be null"); } - axios.patch(useRuntimeConfig().public.apiBase + '/deployments/' + deployment.metadata.namespace + "/" + deployment.metadata.name, replicaCount, { + axios.patch(ApiConfig.getHttpBase() + '/deployments/' + deployment.metadata.namespace + "/" + deployment.metadata.name, replicaCount, { headers: { Authorization: "Bearer " + requireToken(), "Content-Type": "text/plain" diff --git a/requests/ingresses.ts b/requests/ingresses.ts index 8282fc5..39d764b 100644 --- a/requests/ingresses.ts +++ b/requests/ingresses.ts @@ -3,7 +3,7 @@ import type { Ingress } from "~/classes/Ingress"; export function getIngresses(namespace: string | undefined, onSuccess: (ingresses: Ingress[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/ingresses', { + axios.get(ApiConfig.getHttpBase() + '/ingresses', { headers: { Authorization: "Bearer " + requireToken() }, diff --git a/requests/login.ts b/requests/login.ts index c59bee7..70cc825 100644 --- a/requests/login.ts +++ b/requests/login.ts @@ -3,7 +3,7 @@ import type { User } from "~/classes/User"; export function login(user: User, onSuccess: (token: string) => void) { - axios.post(useRuntimeConfig().public.apiBase + '/login', user) + axios.post(ApiConfig.getHttpBase() + '/login', user) .then((response) => { onSuccess(response.data); }) diff --git a/requests/logs.ts b/requests/logs.ts index ae641c3..36593b6 100644 --- a/requests/logs.ts +++ b/requests/logs.ts @@ -10,7 +10,7 @@ export class Log export function getLogs(podId: string | undefined, onSuccess: (logs: Log[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/pods/' + podId + "/logs", { + axios.get(ApiConfig.getHttpBase() + '/pods/' + podId + "/logs", { headers: { Authorization: "Bearer " + requireToken() } diff --git a/requests/namespace.ts b/requests/namespace.ts index c438b60..d59c1f9 100644 --- a/requests/namespace.ts +++ b/requests/namespace.ts @@ -4,7 +4,7 @@ import type { Namespace } from "~/classes/Namespace"; export function getNamespaces(onSuccess: (namespaces: Namespace[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/namespaces', { + axios.get(StringUtils.format("%s/namespaces", ApiConfig.getHttpBase()), { headers: { Authorization: "Bearer " + requireToken() } diff --git a/requests/nodes.ts b/requests/nodes.ts index bc1dd0d..ce589be 100644 --- a/requests/nodes.ts +++ b/requests/nodes.ts @@ -1,10 +1,9 @@ import axios from "axios"; -import type { NodeStats } from "~/classes/Node"; +import { Node } from "~/classes/Node"; - -export function getNodes(onSuccess: (nodes: NodeStats[]) => void) +export function getNodes(onSuccess: (nodes: Node[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/nodes', { + axios.get(ApiConfig.getHttpBase() + '/nodes', { headers: { Authorization: "Bearer " + requireToken() } diff --git a/requests/pod.ts b/requests/pod.ts index c473f90..3086028 100644 --- a/requests/pod.ts +++ b/requests/pod.ts @@ -1,23 +1,8 @@ import axios from "axios"; -import type { Pod } from "~/classes/Pod"; - -export function getPods(namespace: string | undefined, onSuccess: (pods: Pod[]) => void) -{ - axios.get(useRuntimeConfig().public.apiBase + '/pods', { - headers: { - Authorization: "Bearer " + requireToken() - }, - params: getParams(namespace) - }) - .then((response) => { - onSuccess(response.data); - }) - .catch(); -} export function deletePod(namespace: string, name: string, onSuccess: () => void) { - axios.delete(StringUtils.format('%s/pods/%s/%s', useRuntimeConfig().public.apiBase, namespace, name), { + axios.delete(StringUtils.format('%s/pods/%s/%s', ApiConfig.getHttpBase(), namespace, name), { headers: { Authorization: "Bearer " + requireToken() } @@ -26,15 +11,4 @@ export function deletePod(namespace: string, name: string, onSuccess: () => void onSuccess(); }) .catch(); -} - -function getParams(namespace: string | undefined) -{ - if(namespace != undefined) - { - return { - namespace: namespace - } - } - return undefined; } \ No newline at end of file diff --git a/requests/services.ts b/requests/services.ts index 71ade55..37ab475 100644 --- a/requests/services.ts +++ b/requests/services.ts @@ -3,7 +3,7 @@ import type { Service } from "~/classes/Service"; export function getServices(namespace: string | undefined, onSuccess: (services: Service[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/services', { + axios.get(ApiConfig.getHttpBase() + '/services', { headers: { Authorization: "Bearer " + requireToken() }, diff --git a/requests/user.ts b/requests/user.ts index acf93a2..0a98290 100644 --- a/requests/user.ts +++ b/requests/user.ts @@ -3,7 +3,7 @@ import type { User } from "~/classes/User"; export function getUser(username: string, token: string, onSuccess: (user: User) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/users/' + username, { + axios.get(ApiConfig.getHttpBase() + '/users/' + username, { headers: { Authorization: "Bearer " + token } @@ -16,7 +16,7 @@ export function getUser(username: string, token: string, onSuccess: (user: User) export function getUsers(onSuccess: (users: User[]) => void) { - axios.get(useRuntimeConfig().public.apiBase + '/users', { + axios.get(ApiConfig.getHttpBase() + '/users', { headers: { Authorization: "Bearer " + requireToken() } @@ -29,7 +29,7 @@ export function getUsers(onSuccess: (users: User[]) => void) export function createUser(user: User, onSuccess: () => void) { - axios.post(useRuntimeConfig().public.apiBase + '/users', user, { + axios.post(ApiConfig.getHttpBase() + '/users', user, { headers: { Authorization: "Bearer " + requireToken() } @@ -46,7 +46,7 @@ export function changePassword(username: string | undefined, password: string, o { throw new Error("[Method: changePassword] username is undefined."); } - axios.put(useRuntimeConfig().public.apiBase + '/users/' + username + '/password', password, { + axios.put(ApiConfig.getHttpBase() + '/users/' + username + '/password', password, { headers: { Authorization: "Bearer " + requireToken(), "Content-Type": "text/plain" diff --git a/utils/ApiConfig.ts b/utils/ApiConfig.ts new file mode 100644 index 0000000..b1a3509 --- /dev/null +++ b/utils/ApiConfig.ts @@ -0,0 +1,12 @@ +export class ApiConfig +{ + static getHttpBase() + { + return StringUtils.format("%s://%s/api", useRuntimeConfig().public.api.schema, useRuntimeConfig().public.api.host) + } + + static getWsBase() + { + return StringUtils.format("%s://%s/api", useRuntimeConfig().public.api.wsSchema, useRuntimeConfig().public.api.host) + } +} \ No newline at end of file