summary refs log tree commit diff
path: root/gateway/src/events/Message.ts
diff options
context:
space:
mode:
Diffstat (limited to 'gateway/src/events/Message.ts')
-rw-r--r--gateway/src/events/Message.ts62
1 files changed, 0 insertions, 62 deletions
diff --git a/gateway/src/events/Message.ts b/gateway/src/events/Message.ts
deleted file mode 100644

index 7ed1dd06..00000000 --- a/gateway/src/events/Message.ts +++ /dev/null
@@ -1,62 +0,0 @@ -import { CLOSECODES } from "../util/Constants"; -import { WebSocket, Payload } from "@fosscord/gateway"; -let erlpack: any; -try { - erlpack = require("@yukikaze-bot/erlpack"); -} catch (error) {} -import OPCodeHandlers from "../opcodes"; -import { check } from "../opcodes/instanceOf"; -import WS from "ws"; - -const PayloadSchema = { - op: Number, - $d: Object || Number, // or number for heartbeat sequence - $s: Number, - $t: String, -}; - -export async function Message(this: WebSocket, buffer: WS.RawData) { - // TODO: compression - let data: Payload; - - if (this.encoding === "etf" && buffer instanceof Buffer) - data = erlpack.unpack(buffer); - else if (this.encoding === "json") - data = JSON.parse(buffer as unknown as string); //TODO: is this even correct?? seems to work for web clients... - else if(/--debug|--inspect/.test(process.execArgv.join(' '))) { - debugger; - return; - } - else { - console.log("Invalid gateway connection! Use a debugger to inspect!"); - return; - } - - if(process.env.WS_VERBOSE) - console.log(`[Websocket] Incomming message: ${JSON.stringify(data)}`); - if(data.op !== 1) - check.call(this, PayloadSchema, data); - else { //custom validation for numbers, because heartbeat - if(data.s || data.t || (typeof data.d !== "number" && data.d)) { - console.log("Invalid heartbeat..."); - this.close(CLOSECODES.Decode_error); - } - } - - // @ts-ignore - const OPCodeHandler = OPCodeHandlers[data.op]; - if (!OPCodeHandler) { - console.error("[Gateway] Unkown opcode " + data.op); - // TODO: if all opcodes are implemented comment this out: - // this.close(CLOSECODES.Unknown_opcode); - return; - } - - try { - return await OPCodeHandler.call(this, data); - } catch (error) { - console.error(error); - if (!this.CLOSED && this.CLOSING) - return this.close(CLOSECODES.Unknown_error); - } -}