mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Replace usage of request in setupLensProxy
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
c3402562a1
commit
f522d23662
33
src/common/fetch/lens-fetch.injectable.ts
Normal file
33
src/common/fetch/lens-fetch.injectable.ts
Normal file
@ -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 { Agent } from "https";
|
||||
import type { RequestInit, Response } from "node-fetch";
|
||||
import lensProxyPortInjectable from "../../main/lens-proxy/lens-proxy-port.injectable";
|
||||
import lensProxyCertificateInjectable from "../certificate/lens-proxy-certificate.injectable";
|
||||
import nodeFetchModuleInjectable from "./fetch-module.injectable";
|
||||
|
||||
export type LensFetch = (pathnameAndOrQuery: string, init?: Omit<RequestInit, "agent">) => Promise<Response>;
|
||||
|
||||
/**
|
||||
* This fetch is for requesting items from the Lens Proxy and thus does not cause side effects
|
||||
*/
|
||||
const lensFetchInjectable = getInjectable({
|
||||
id: "lens-fetch",
|
||||
instantiate: (di): LensFetch => {
|
||||
const { default: fetch } = di.inject(nodeFetchModuleInjectable);
|
||||
const lensProxyPort = di.inject(lensProxyPortInjectable);
|
||||
const lensProxyCertificate = di.inject(lensProxyCertificateInjectable);
|
||||
|
||||
return async (pathnameAndOrQuery, init) => fetch(`https://127.0.0.1:${lensProxyPort.get()}${pathnameAndOrQuery}`, {
|
||||
...init,
|
||||
agent: new Agent({
|
||||
ca: lensProxyCertificate.get().cert,
|
||||
}),
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export default lensFetchInjectable;
|
||||
@ -7,7 +7,7 @@ import { getInjectionToken } from "@ogre-tools/injectable";
|
||||
import { SemVer } from "semver";
|
||||
import type { InitializableState } from "../initializable-state/create";
|
||||
import { createInitializableState } from "../initializable-state/create";
|
||||
import type { RequestChannel } from "../utils/channel/request-channel-listener-injection-token";
|
||||
import type { RequestChannel } from "../utils/channel/request-channel";
|
||||
|
||||
export const buildVersionInjectionToken = getInjectionToken<InitializableState<string>>({
|
||||
id: "build-version-token",
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
/**
|
||||
* 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 lensFetchInjectable from "../../../../common/fetch/lens-fetch.injectable";
|
||||
|
||||
const requestAppVersionViaProxyInjectable = getInjectable({
|
||||
id: "request-app-version-via-proxy",
|
||||
instantiate: (di) => {
|
||||
const lensFetch = di.inject(lensFetchInjectable);
|
||||
|
||||
return async () => {
|
||||
const response = await lensFetch("/version");
|
||||
|
||||
return (await response.json() as { version: string }).version;
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
export default requestAppVersionViaProxyInjectable;
|
||||
@ -3,18 +3,14 @@
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import exitAppInjectable from "../../electron-app/features/exit-app.injectable";
|
||||
import lensProxyInjectable from "../../lens-proxy/lens-proxy.injectable";
|
||||
import loggerInjectable from "../../../common/logger.injectable";
|
||||
import lensProxyPortInjectable from "../../lens-proxy/lens-proxy-port.injectable";
|
||||
import isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
||||
import showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable";
|
||||
import { beforeApplicationIsLoadingInjectionToken } from "../runnable-tokens/before-application-is-loading-injection-token";
|
||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
||||
import initializeBuildVersionInjectable from "../../vars/build-version/init.injectable";
|
||||
import lensProxyCertificateInjectable from "../../../common/certificate/lens-proxy-certificate.injectable";
|
||||
import fetchInjectable from "../../../common/fetch/fetch.injectable";
|
||||
import { Agent } from "https";
|
||||
import exitAppInjectable from "../../../electron-app/features/exit-app.injectable";
|
||||
import lensProxyInjectable from "../../../lens-proxy/lens-proxy.injectable";
|
||||
import loggerInjectable from "../../../../common/logger.injectable";
|
||||
import isWindowsInjectable from "../../../../common/vars/is-windows.injectable";
|
||||
import showErrorPopupInjectable from "../../../electron-app/features/show-error-popup.injectable";
|
||||
import { beforeApplicationIsLoadingInjectionToken } from "../../runnable-tokens/before-application-is-loading-injection-token";
|
||||
import buildVersionInjectable from "../../../vars/build-version/build-version.injectable";
|
||||
import requestAppVersionViaProxyInjectable from "./request-app-version.injectable";
|
||||
|
||||
const setupLensProxyInjectable = getInjectable({
|
||||
id: "setup-lens-proxy",
|
||||
@ -23,12 +19,10 @@ const setupLensProxyInjectable = getInjectable({
|
||||
const lensProxy = di.inject(lensProxyInjectable);
|
||||
const exitApp = di.inject(exitAppInjectable);
|
||||
const logger = di.inject(loggerInjectable);
|
||||
const lensProxyPort = di.inject(lensProxyPortInjectable);
|
||||
const requestAppVersionViaProxy = di.inject(requestAppVersionViaProxyInjectable);
|
||||
const isWindows = di.inject(isWindowsInjectable);
|
||||
const showErrorPopup = di.inject(showErrorPopupInjectable);
|
||||
const buildVersion = di.inject(buildVersionInjectable);
|
||||
const lensProxyCertificate = di.inject(lensProxyCertificateInjectable);
|
||||
const fetch = di.inject(fetchInjectable);
|
||||
|
||||
return {
|
||||
id: "setup-lens-proxy",
|
||||
@ -45,13 +39,7 @@ const setupLensProxyInjectable = getInjectable({
|
||||
// test proxy connection
|
||||
try {
|
||||
logger.info("🔎 Testing LensProxy connection ...");
|
||||
const versionResponse = await fetch(`https://127.0.0.1:${lensProxyPort.get()}/version`, {
|
||||
agent: new Agent({
|
||||
ca: lensProxyCertificate.get()?.cert,
|
||||
}),
|
||||
});
|
||||
|
||||
const { version: versionFromProxy } = await versionResponse.json() as { version: string };
|
||||
const versionFromProxy = await requestAppVersionViaProxy();
|
||||
|
||||
if (buildVersion.get() !== versionFromProxy) {
|
||||
logger.error("Proxy server responded with invalid response");
|
||||
@ -78,7 +66,6 @@ const setupLensProxyInjectable = getInjectable({
|
||||
return exitApp();
|
||||
}
|
||||
},
|
||||
runAfter: di.inject(initializeBuildVersionInjectable),
|
||||
};
|
||||
},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user