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 { SemVer } from "semver";
|
||||||
import type { InitializableState } from "../initializable-state/create";
|
import type { InitializableState } from "../initializable-state/create";
|
||||||
import { createInitializableState } 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>>({
|
export const buildVersionInjectionToken = getInjectionToken<InitializableState<string>>({
|
||||||
id: "build-version-token",
|
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.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import exitAppInjectable from "../../electron-app/features/exit-app.injectable";
|
import exitAppInjectable from "../../../electron-app/features/exit-app.injectable";
|
||||||
import lensProxyInjectable from "../../lens-proxy/lens-proxy.injectable";
|
import lensProxyInjectable from "../../../lens-proxy/lens-proxy.injectable";
|
||||||
import loggerInjectable from "../../../common/logger.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 isWindowsInjectable from "../../../common/vars/is-windows.injectable";
|
import showErrorPopupInjectable from "../../../electron-app/features/show-error-popup.injectable";
|
||||||
import showErrorPopupInjectable from "../../electron-app/features/show-error-popup.injectable";
|
import { beforeApplicationIsLoadingInjectionToken } from "../../runnable-tokens/before-application-is-loading-injection-token";
|
||||||
import { beforeApplicationIsLoadingInjectionToken } from "../runnable-tokens/before-application-is-loading-injection-token";
|
import buildVersionInjectable from "../../../vars/build-version/build-version.injectable";
|
||||||
import buildVersionInjectable from "../../vars/build-version/build-version.injectable";
|
import requestAppVersionViaProxyInjectable from "./request-app-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";
|
|
||||||
|
|
||||||
const setupLensProxyInjectable = getInjectable({
|
const setupLensProxyInjectable = getInjectable({
|
||||||
id: "setup-lens-proxy",
|
id: "setup-lens-proxy",
|
||||||
@ -23,12 +19,10 @@ const setupLensProxyInjectable = getInjectable({
|
|||||||
const lensProxy = di.inject(lensProxyInjectable);
|
const lensProxy = di.inject(lensProxyInjectable);
|
||||||
const exitApp = di.inject(exitAppInjectable);
|
const exitApp = di.inject(exitAppInjectable);
|
||||||
const logger = di.inject(loggerInjectable);
|
const logger = di.inject(loggerInjectable);
|
||||||
const lensProxyPort = di.inject(lensProxyPortInjectable);
|
const requestAppVersionViaProxy = di.inject(requestAppVersionViaProxyInjectable);
|
||||||
const isWindows = di.inject(isWindowsInjectable);
|
const isWindows = di.inject(isWindowsInjectable);
|
||||||
const showErrorPopup = di.inject(showErrorPopupInjectable);
|
const showErrorPopup = di.inject(showErrorPopupInjectable);
|
||||||
const buildVersion = di.inject(buildVersionInjectable);
|
const buildVersion = di.inject(buildVersionInjectable);
|
||||||
const lensProxyCertificate = di.inject(lensProxyCertificateInjectable);
|
|
||||||
const fetch = di.inject(fetchInjectable);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "setup-lens-proxy",
|
id: "setup-lens-proxy",
|
||||||
@ -45,13 +39,7 @@ const setupLensProxyInjectable = getInjectable({
|
|||||||
// test proxy connection
|
// test proxy connection
|
||||||
try {
|
try {
|
||||||
logger.info("🔎 Testing LensProxy connection ...");
|
logger.info("🔎 Testing LensProxy connection ...");
|
||||||
const versionResponse = await fetch(`https://127.0.0.1:${lensProxyPort.get()}/version`, {
|
const versionFromProxy = await requestAppVersionViaProxy();
|
||||||
agent: new Agent({
|
|
||||||
ca: lensProxyCertificate.get()?.cert,
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const { version: versionFromProxy } = await versionResponse.json() as { version: string };
|
|
||||||
|
|
||||||
if (buildVersion.get() !== versionFromProxy) {
|
if (buildVersion.get() !== versionFromProxy) {
|
||||||
logger.error("Proxy server responded with invalid response");
|
logger.error("Proxy server responded with invalid response");
|
||||||
@ -78,7 +66,6 @@ const setupLensProxyInjectable = getInjectable({
|
|||||||
return exitApp();
|
return exitApp();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
runAfter: di.inject(initializeBuildVersionInjectable),
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user