From 38757c60e119c29e3b501ae2f68825d7fa8cec94 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Wed, 10 Feb 2021 14:37:16 +0100 Subject: [PATCH] update import to fosscord-server-util --- package-lock.json | Bin 109013 -> 108977 bytes package.json | 4 ++-- src/.DS_Store | Bin 6148 -> 6148 bytes src/Server.ts | 10 +++++++++- src/listener/listener.ts | 19 +++++++++---------- src/opcodes/Identify.ts | 21 ++++++++++++--------- src/util/Config.ts | 2 +- 7 files changed, 33 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff4c3a3c22ca89cf551558b582ec7bc9a04bb561..bc082ae9b89852df2391bb0142a9b34b8fc26afa 100644 GIT binary patch delta 581 zcmcb5nQh}`wh1>Tt1?P5r{xzO}I$Sh9IFG|q|iSaN>PS$4`UD6a5~a4!uu$k8`Q)-G|gF!L@;j0g&{G^z|rb}uk> z_6QHE2uKSp3^VYK(03~__s=dY2@3HxEpaLJ(sxQS$qsdn$S?{EO`kl`RDN=qq0)2* zdq$Sc9I4+{ZO;;9Y!(4}ahd?5T|M=@sHDTi$;qjdR+OKsWTl`4GZ;C@9DqTVQJQ20 zlhaQFI%E1J0mf)}*a)zs6{QwW|0u^Ox}8;xQ9ukWm_lh1Ow$V&GRjUaH&g@%(`1g+ L_U-d*8O?J5Kjgmm delta 610 zcmdmZneFOjwh1?wQZlC(sxXSkDWzwYWRxaZrDPT-=NF~u<`<;q=@#dg7A2?Z1JxL) zGKvdxDy0_X6eK2RD_JQh#Tn=s>KRYgWwc~8+nmn$P7i97>f{Ta5|fX)ONL-K3SxY5 zYEfBgk#1>8W{w`vW@QUABO?QYL<@ry^OPi0qhte<#H1u6V*`Waq$CpygH)q53uDui zw4}+J9?6WRlY2cpH-{P+iEqB{At^oCh*f{Of(@h0WFt+P$pQ0O!rYQV{T!3h10qAq z(!7Ezd{UCrJhRQpExfd&Ogtl_yb_DULW7)qb4^nHQ+;yv^|RC6Q~fiwgNwWh3lmMN zw9^xvz06Eq{XD~pjWSZSowJNw(~`l diff --git a/package.json b/package.json index 4f70c89e..7ba4488b 100644 --- a/package.json +++ b/package.json @@ -12,10 +12,10 @@ "author": "", "license": "ISC", "dependencies": { - "discord-server-util": "github:discord-open-source/discord-server-util", "erlpack": "^0.1.3", + "fosscord-server-util": "github:fosscord/fosscord-server-util", "jsonwebtoken": "^8.5.1", - "lambert-db": "^1.1.6", + "lambert-db": "^1.1.8", "lambert-server": "^1.1.3", "missing-native-js-functions": "^1.2.3", "node-fetch": "^2.6.1", diff --git a/src/.DS_Store b/src/.DS_Store index b1f8af5073011d954adf62af3aa5858b02df974c..6efdbd02f78597ba8b998b9378ec0be07374b843 100644 GIT binary patch delta 351 zcmZoMXfc@JFUrKgz`)4BAi%&-!cd%4UR;orlb^I%k$E}eWCIbFdNzhshB6?|LzV_= z`H@tRlUZD1U~q$xiJ66!jh%y&i<_I9kDD_#I3vG2xFoTpwAd-JC|*D&I5QUWBsI@9C$%g!&%ekgu_U!98l*TRKR*Yk0K!g83d>9_j~5Ve&d)1Jtk29#Edm<| zF(f8DGcP5-+$p~_FQpi)0ctv!9gtX(0W^q1*&*uz(2WcXoSdBT0@Bshx`t+EraB6S z7ACbi3e|=tW(GP6mKNrnt}|FGwO2-fSQ3o0YtC?olpUEL=nhA vFn59^fFKcwQRHzt1j&rtd>jsesSyHN1aS$>Ap*c~ImR-vL2WZT$6tN`v9V12 diff --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 { 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; - - const identify: IdentifySchema = data.d; - try { - var { id } = await checkToken(identify.token); + clearTimeout(this.readyTimeout); + instanceOf(IdentifySchema, data.d); + + const identify: IdentifySchema = data.d; + + 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() {