From 6729f465426dc475fe79715b4520ef6857ea8d5f Mon Sep 17 00:00:00 2001 From: Janne Savolainen Date: Fri, 11 Feb 2022 10:39:07 +0200 Subject: [PATCH] Switch to using injectable to setup route for get chart Signed-off-by: Janne Savolainen --- src/main/router.ts | 1 - .../helm/charts/get-chart-route.injectable.ts | 35 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/main/routes/helm/charts/get-chart-route.injectable.ts diff --git a/src/main/router.ts b/src/main/router.ts index bdd8317533..23ea533bbd 100644 --- a/src/main/router.ts +++ b/src/main/router.ts @@ -183,7 +183,6 @@ export class Router { this.router.add({ method: "delete", path: `${apiPrefix}/pods/port-forward/{namespace}/{resourceType}/{resourceName}` }, PortForwardRoute.routeCurrentPortForwardStop); // Helm API - this.router.add({ method: "get", path: `${apiPrefix}/v2/charts/{repo}/{chart}` }, HelmApiRoute.getChart); this.router.add({ method: "get", path: `${apiPrefix}/v2/charts/{repo}/{chart}/values` }, HelmApiRoute.getChartValues); this.router.add({ method: "post", path: `${apiPrefix}/v2/releases` }, HelmApiRoute.installChart); diff --git a/src/main/routes/helm/charts/get-chart-route.injectable.ts b/src/main/routes/helm/charts/get-chart-route.injectable.ts new file mode 100644 index 0000000000..57203c895c --- /dev/null +++ b/src/main/routes/helm/charts/get-chart-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 { helmService } from "../../../helm/helm-service"; +import { respondJson, respondText } from "../../../utils/http-responses"; +import { apiPrefix } from "../../../../common/vars"; + +const getChartRouteInjectable = getInjectable({ + id: "get-chart-route", + + instantiate: () => ({ + method: "get", + path: `${apiPrefix}/v2/charts/{repo}/{chart}`, + + handler: async (request: LensApiRequest) => { + const { params, query, response } = request; + + try { + const chart = await helmService.getChart(params.repo, params.chart, query.get("version")); + + respondJson(response, chart); + } catch (error) { + respondText(response, error?.toString() || "Error getting chart", 422); + } + }, + }), + + injectionToken: routeInjectionToken, +}); + +export default getChartRouteInjectable;