refactor: Refactor simplify types for proxy upgrade call

Signed-off-by: Carlos Esteban Lopez <lcarlosesteb@vmware.com>
This commit is contained in:
Carlos Esteban Lopez
2023-09-15 09:09:55 -05:00
parent 69dee739be
commit bbb750442a
3 changed files with 6 additions and 18 deletions
-1
View File
@@ -75,7 +75,6 @@
"express-promise-router": "^4.1.0",
"fs-extra": "10.1.0",
"helmet": "^6.0.0",
"http-proxy": "^1.18.1",
"http-proxy-middleware": "^2.0.6",
"lodash": "^4.17.21",
"luxon": "^3.0.0",
@@ -27,14 +27,12 @@ import {
PermissionEvaluator,
} from '@backstage/plugin-permission-common';
import { bufferFromFileOrString } from '@kubernetes/client-node';
import { IncomingMessage, ServerResponse } from 'http';
import Server from 'http-proxy';
import { createProxyMiddleware } from 'http-proxy-middleware';
import { createProxyMiddleware, RequestHandler } from 'http-proxy-middleware';
import { Logger } from 'winston';
import { AuthenticationStrategy } from '../auth';
import { ClusterDetails, KubernetesClustersSupplier } from '../types/types';
import type { Request, RequestHandler } from 'express';
import type { Request } from 'express';
export const APPLICATION_JSON: string = 'application/json';
@@ -123,22 +121,14 @@ export class KubernetesProxy {
}
const middleware = await this.getMiddleware(req);
// If req is an upgrade handshake, use middleware upgrade instead of http request handler https://github.com/chimurai/http-proxy-middleware#external-websocket-upgrade
if (
req.header('connection')?.toLowerCase() === 'upgrade' &&
req.header('upgrade')?.toLowerCase() === 'websocket'
) {
type IPartialUpgradeHandler = (
...args: Partial<
Parameters<
Server<IncomingMessage, ServerResponse<IncomingMessage>>['ws']
>
>
) => void;
(
middleware as unknown as {
upgrade: IPartialUpgradeHandler;
}
).upgrade(req, req.socket);
// Missing the `head`, since it's optional we pass undefined to avoid type issues
middleware.upgrade!(req, req.socket, undefined);
} else {
middleware(req, res, next);
}