summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-10 14:37:16 +0100
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-10 14:37:16 +0100
commit38757c60e119c29e3b501ae2f68825d7fa8cec94 (patch)
treebb9201aa0a7b7e5a962753fab832b7f3bdb51c4f /src
parentMerge branch 'main' of https://github.com/discord-open-source/discord-gateway... (diff)
downloadserver-38757c60e119c29e3b501ae2f68825d7fa8cec94.tar.xz
update import to fosscord-server-util
Diffstat (limited to 'src')
-rw-r--r--src/.DS_Storebin6148 -> 6148 bytes
-rw-r--r--src/Server.ts10
-rw-r--r--src/listener/listener.ts19
-rw-r--r--src/opcodes/Identify.ts19
-rw-r--r--src/util/Config.ts2
5 files changed, 30 insertions, 20 deletions
diff --git a/src/.DS_Store b/src/.DS_Store

index b1f8af50..6efdbd02 100644 --- a/src/.DS_Store +++ b/src/.DS_Store
Binary files differdiff --git a/src/Server.ts b/src/Server.ts
index 3598c8e1..3bd10928 100644 --- a/src/Server.ts +++ b/src/Server.ts
@@ -1,6 +1,7 @@ -import { db } from "discord-server-util"; +import { db } from "fosscord-server-util"; import { Server as WebSocketServer } from "ws"; import { Connection } from "./events/Connection"; +import Config from "./util/Config"; export class Server { public ws: WebSocketServer; @@ -9,8 +10,15 @@ export class Server { this.ws.on("connection", Connection); } + async setupSchema() { + // TODO: adjust expireAfterSeconds -> lower + await db.conn.db.collection("events").createIndex({ created_at: 1 }, { expireAfterSeconds: 60 }); + } + async listen(): Promise<void> { await db.init(); + await this.setupSchema(); + await Config.init(); console.log("listening"); } } diff --git a/src/listener/listener.ts b/src/listener/listener.ts
index 12abaf86..d9531290 100644 --- a/src/listener/listener.ts +++ b/src/listener/listener.ts
@@ -1,24 +1,23 @@ -import { db, User } from "discord-server-util"; -import { ProviderCache } from "lambert-db"; +import { db, User, Event } from "fosscord-server-util"; import { MongodbProviderCache } from "lambert-db/dist/Mongodb"; import WebSocket from "../util/WebSocket"; export async function setupListener(this: WebSocket) { - // TODO: shard guilds (only for bots) + // TODO: bot sharding + // TODO: close connection on Invalidated Token const user: User = await db.data.users({ id: this.userid }).get(); // * MongoDB specific $in query to get all guilds of the user - const guildCache: MongodbProviderCache = await db.data - .guilds({ id: { $id: user.guilds } }) + const eventStream: MongodbProviderCache = await db.data + .guilds({ $or: [{ guild_id: { $in: user.guilds } }, { user_id: this.userid }] }) .cache({ onlyEvents: true }) .init(); - guildCache.on("change", (data) => { - console.log(data); + eventStream.on("insert", (document: Event) => { + console.log("event", document); + this.emit(document.event, document.data); }); - this.once("close", async () => { - await guildCache.destroy(); - }); + this.once("close", () => eventStream.destroy()); } diff --git a/src/opcodes/Identify.ts b/src/opcodes/Identify.ts
index ebb5ca70..f0546a41 100644 --- a/src/opcodes/Identify.ts +++ b/src/opcodes/Identify.ts
@@ -1,17 +1,20 @@ import { CLOSECODES, Payload } from "../util/Constants"; -import Config from "../util/Config"; import WebSocket from "../util/WebSocket"; -import { checkToken, IdentifySchema } from "discord-server-util"; -import { check } from "./instanceOf"; +import { checkToken, IdentifySchema } from "fosscord-server-util"; +import { setupListener } from "../listener/listener"; +import { instanceOf } from "lambert-server"; export async function onIdentify(this: WebSocket, data: Payload) { - clearTimeout(this.readyTimeout); - if (check.call(this, IdentifySchema, data.d)) return; + try { + clearTimeout(this.readyTimeout); + instanceOf(IdentifySchema, data.d); - const identify: IdentifySchema = data.d; + const identify: IdentifySchema = data.d; - try { - var { id } = await checkToken(identify.token); + var decoded = await checkToken(identify.token); + this.userid = decoded.id; + + await setupListener.call(this); } catch (error) { return this.close(CLOSECODES.Authentication_failed); } diff --git a/src/util/Config.ts b/src/util/Config.ts
index 4479c721..a2612a60 100644 --- a/src/util/Config.ts +++ b/src/util/Config.ts
@@ -1,4 +1,4 @@ -import { Config } from "discord-server-util"; +import { Config } from "fosscord-server-util"; export default { init() {