refactor: Refactor simplify types for proxy upgrade call
Signed-off-by: Carlos Esteban Lopez <lcarlosesteb@vmware.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user