From fc582d77a2856722b7578d6e0584bb029da2cec5 Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Fri, 11 Feb 2022 11:18:11 +0200 Subject: [PATCH] Switch to using injectable to setup route for patching resource Signed-off-by: Janne Savolainen --- src/main/router.ts | 5 +-- src/main/routes/index.ts | 1 - src/main/routes/resource-applier-route.ts | 22 ------------ .../patch-resource-route.injectable.ts | 35 +++++++++++++++++++ 4 files changed, 36 insertions(+), 27 deletions(-) delete mode 100644 src/main/routes/resource-applier-route.ts create mode 100644 src/main/routes/resource-applier/patch-resource-route.injectable.ts diff --git a/src/main/router.ts b/src/main/router.ts index 8a102fb0a0..f270db621d 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -11,7 +11,7 @@ import path from "path"; import { readFile } from "fs-extra"; import type { Cluster } from "../common/cluster/cluster"; import { apiPrefix, appName, publicPath } from "../common/vars"; -import { KubeconfigRoute, MetricsRoute, PortForwardRoute, ResourceApplierApiRoute, VersionRoute } from "./routes"; +import { KubeconfigRoute, MetricsRoute, PortForwardRoute, VersionRoute } from "./routes"; import logger from "./logger"; export interface RouterRequestOpts { @@ -181,9 +181,6 @@ export class Router { this.router.add({ method: "post", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, this.dependencies.routePortForward); this.router.add({ method: "get", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForward); this.router.add({ method: "delete", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForwardStop); - - // Resource Applier API - this.router.add({ method: "patch", path: `${apiPrefix}/stack` }, ResourceApplierApiRoute.patchResource); } } diff --git a/src/main/routes/index.ts b/src/main/routes/index.ts index 8d6cb2f16f..c603c91dbd 100644 --- a/src/main/routes/index.ts +++ b/src/main/routes/index.ts @@ -6,5 +6,4 @@ export * from "./kubeconfig-route"; export * from "./metrics-route"; export * from "./port-forward-route"; -export * from "./resource-applier-route"; export * from "./version-route"; diff --git a/src/main/routes/resource-applier-route.ts b/src/main/routes/resource-applier-route.ts deleted file mode 100644 index 25d2b2496d..0000000000 --- a/src/main/routes/resource-applier-route.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import type { LensApiRequest } from "../router"; -import { respondJson, respondText } from "../utils/http-responses"; -import { ResourceApplier } from "../resource-applier"; - -export class ResourceApplierApiRoute { - static async patchResource(request: LensApiRequest) { - const { response, cluster, payload } = request; - - try { - const resource = await new ResourceApplier(cluster).patch(payload.name, payload.kind, payload.patch, payload.ns); - - respondJson(response, resource, 200); - } catch (error) { - respondText(response, error, 422); - } - } -} diff --git a/src/main/routes/resource-applier/patch-resource-route.injectable.ts b/src/main/routes/resource-applier/patch-resource-route.injectable.ts new file mode 100644 index 0000000000..bec2568a0a --- /dev/null +++ b/src/main/routes/resource-applier/patch-resource-route.injectable.ts @@ -0,0 +1,35 @@ +/** + * 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 { routeInjectionToken } from "../../router/router.injectable"; +import type { LensApiRequest } from "../../router"; +import { apiPrefix } from "../../../common/vars"; +import { ResourceApplier } from "../../resource-applier"; +import { respondJson, respondText } from "../../utils/http-responses"; + +const patchResourceRouteInjectable = getInjectable({ + id: "patch-resource-route", + + instantiate: () => ({ + method: "patch", + path: `${apiPrefix}/stack`, + + handler: async (request: LensApiRequest) => { + const { response, cluster, payload } = request; + + try { + const resource = await new ResourceApplier(cluster).patch(payload.name, payload.kind, payload.patch, payload.ns); + + respondJson(response, resource, 200); + } catch (error) { + respondText(response, error, 422); + } + }, + }), + + injectionToken: routeInjectionToken, +}); + +export default patchResourceRouteInjectable;