From fa9f024c821dd0e258c4d9b21766ffce7b736198 Mon Sep 17 00:00:00 2001 From: John Yeo Date: Fri, 14 Nov 2025 10:51:06 +0000 Subject: [PATCH] chore: deleted ws files --- server/src/index.ts | 1 - server/src/websockets/WsManager.ts | 18 ---- server/src/websockets/initWs.ts | 127 ----------------------------- 3 files changed, 146 deletions(-) delete mode 100644 server/src/websockets/WsManager.ts delete mode 100644 server/src/websockets/initWs.ts diff --git a/server/src/index.ts b/server/src/index.ts index e356e03d3..ad747661d 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -264,7 +264,6 @@ async function gracefulShutdown() { process.exit(1); } } - // Close connections gracefully? const closeConnections = async () => { console.log("Closing connections"); diff --git a/server/src/websockets/WsManager.ts b/server/src/websockets/WsManager.ts deleted file mode 100644 index d640e6b4f..000000000 --- a/server/src/websockets/WsManager.ts +++ /dev/null @@ -1,18 +0,0 @@ -export class WebsocketManager { - public channels: Map>; - public subscriptions: WeakMap>; - - constructor() { - this.channels = new Map(); - this.subscriptions = new WeakMap(); - } - - // Initialize a client's subscription tracking - initializeClient(ws: WebSocket) { - // this.subscriptions.set(ws, new Set()); - // this.sendToClient(ws, { - // type: "welcome", - // channels: Array.from(this.channels.keys()), - // }); - } -} diff --git a/server/src/websockets/initWs.ts b/server/src/websockets/initWs.ts deleted file mode 100644 index b05f78715..000000000 --- a/server/src/websockets/initWs.ts +++ /dev/null @@ -1,127 +0,0 @@ -import http from "http"; -import { AppEnv, ErrCode } from "@autumn/shared"; -import { WebSocketServer, WebSocket } from "ws"; - -export enum SbChannelEvent { - BalanceUpdated = "balance_updated", -} - -interface RouteInfo { - pattern: RegExp; - paramNames: string[]; - callback: ( - ws: WebSocket, - req: http.IncomingMessage, - params: Record, - ) => Promise; -} - -const getPkey = async (req: any) => { - const query = req.url.split("?")[1]; - const queryParams = new URLSearchParams(query); - const pkey = req.headers["x-publishable-key"] || queryParams.get("pkey"); - - if (!pkey) { - throw new Error("No publishable key found"); - } - - if (typeof pkey !== "string") { - throw new Error("Invalid publishable key"); - } - - if (!pkey.startsWith("am_pk_test_") && !pkey.startsWith("am_pk_live_")) { - throw new Error("Invalid publishable key"); - } - - const env = pkey.startsWith("am_pk_test_") ? AppEnv.Sandbox : AppEnv.Live; - - return { - error: ErrCode.OrgNotFound, - fallback: false, - statusCode: 401, - }; -}; - -class WebSocketRouter { - private wss: WebSocketServer; - private routes: RouteInfo[] = []; - - public on({ - route, - callback, - }: { - route: string; - callback: ( - ws: WebSocket, - req: any, - params: Record, - ) => Promise; - }) { - const paramNames: string[] = []; - const pattern = route.replace(/:([^/]+)/g, (_, paramName) => { - paramNames.push(paramName); - return "([^/]+)"; - }); - this.routes.push({ - pattern: new RegExp(`^${pattern}$`), - paramNames, - callback, - }); - } - - constructor(server: http.Server) { - this.wss = new WebSocketServer({ server }); - this.wss.on("connection", (ws: WebSocket, req: http.IncomingMessage) => - this.handleConnection(ws as any, req as any), - ); - } - - private async handleConnection(ws: WebSocket, req: any) { - const path = req.url; - - try { - } catch (error) { - console.log("Failed to get org from pkey"); - ws.close(1000, "Invalid publishable key"); - return; - } - - for (const route of this.routes) { - const match = path.match(route.pattern); - if (match) { - // Extract params from match groups - const params: Record = {}; - route.paramNames.forEach((name, index) => { - params[name] = match[index + 1]; - }); - route.callback(ws, req, params); - return; - } - } - - if (!path) { - ws.close(1000, "No path found"); - return; - } - - ws.close(1000, "Route not found"); - } -} - -export const initWs = (server: http.Server) => { - const wsRouter = new WebSocketRouter(server); - - wsRouter.on({ - route: "/:customer_id/entitlements", - callback: async (ws, req, params) => { - console.log("entitlements", params); - }, - }); - - wsRouter.on({ - route: "/:customer_id/entitlements/:feature_id", - callback: async (ws, req, params) => { - console.log("entitlement", params); - }, - }); -};