diff --git a/src/Server.ts b/src/Server.ts
index d427b964..b561f94e 100644
--- a/src/Server.ts
+++ b/src/Server.ts
@@ -3,7 +3,7 @@ import fs from "fs/promises";
import { Server, ServerOptions } from "lambert-server";
import { Authentication, GlobalRateLimit } from "./middlewares/";
import Config from "./util/Config";
-import { db } from "discord-server-util";
+import { db } from "fosscord-server-util";
import i18next from "i18next";
import i18nextMiddleware, { I18next } from "i18next-http-middleware";
import i18nextBackend from "i18next-node-fs-backend";
diff --git a/src/middlewares/Authentication.ts b/src/middlewares/Authentication.ts
index 979c954a..d6eb5796 100644
--- a/src/middlewares/Authentication.ts
+++ b/src/middlewares/Authentication.ts
@@ -1,6 +1,6 @@
import { NextFunction, Request, Response } from "express";
import { HTTPError } from "lambert-server";
-import { checkToken } from "discord-server-util";
+import { checkToken } from "fosscord-server-util";
export const NO_AUTHORIZATION_ROUTES = ["/api/v8/auth/login", "/api/v8/auth/register"];
diff --git a/src/middlewares/GlobalRateLimit.ts b/src/middlewares/GlobalRateLimit.ts
index 73a8c08a..c729987a 100644
--- a/src/middlewares/GlobalRateLimit.ts
+++ b/src/middlewares/GlobalRateLimit.ts
@@ -1,6 +1,6 @@
import { NextFunction, Request, Response } from "express";
import Config from "../util/Config";
-import { db } from "discord-server-util";
+import { db } from "fosscord-server-util";
// TODO: use mongodb ttl index
// TODO: increment count on serverside
diff --git a/src/middlewares/RateLimit.ts b/src/middlewares/RateLimit.ts
index 33ae0cd5..c42d773c 100644
--- a/src/middlewares/RateLimit.ts
+++ b/src/middlewares/RateLimit.ts
@@ -1,5 +1,5 @@
import { NextFunction, Request, Response } from "express";
-import { db } from "discord-server-util";
+import { db } from "fosscord-server-util";
import { getIpAdress } from "./GlobalRateLimit";
diff --git a/src/routes/api/v8/auth/login.ts b/src/routes/api/v8/auth/login.ts
index f12c0a64..ac9775df 100644
--- a/src/routes/api/v8/auth/login.ts
+++ b/src/routes/api/v8/auth/login.ts
@@ -2,7 +2,7 @@ import { Request, Response, Router } from "express";
import { check, FieldErrors, Length } from "../../../../util/instanceOf";
import bcrypt from "bcrypt";
import jwt from "jsonwebtoken";
-import { db, User } from "discord-server-util";
+import { db, User } from "fosscord-server-util";
import Config from "../../../../util/Config";
import { adjustEmail } from "./register";
diff --git a/src/routes/api/v8/auth/register.ts b/src/routes/api/v8/auth/register.ts
index 361b9a23..1250b689 100644
--- a/src/routes/api/v8/auth/register.ts
+++ b/src/routes/api/v8/auth/register.ts
@@ -1,6 +1,6 @@
import { Request, Response, Router } from "express";
import Config from "../../../../util/Config";
-import { db, trimSpecial, User, Snowflake } from "discord-server-util";
+import { db, trimSpecial, User, Snowflake } from "fosscord-server-util";
import bcrypt from "bcrypt";
import { check, Email, EMAIL_REGEX, FieldErrors, Length } from "../../../../util/instanceOf";
import "missing-native-js-functions";
@@ -177,6 +177,7 @@ router.post(
email: adjusted_email,
flags: 0n, // TODO: generate default flags
hash: adjusted_password,
+ guilds: [],
valid_tokens_since: Date.now(),
user_settings: {
afk_timeout: 300,
diff --git a/src/routes/api/v8/guilds/index.ts b/src/routes/api/v8/guilds/index.ts
index 9a4e81fa..ca9d8824 100644
--- a/src/routes/api/v8/guilds/index.ts
+++ b/src/routes/api/v8/guilds/index.ts
@@ -1,4 +1,152 @@
-import { Router } from "express";
+import { Router, Request, Response } from "express";
+import { db, GuildSchema, Guild, Snowflake } from "fosscord-server-util";
+import { HTTPError } from "lambert-server";
+import { check } from "./../../../../util/instanceOf";
+
const router: Router = Router();
+router.get("/:id", async (req: Request, res: Response) => {
+ const member = await db.data.guilds({ id: req.params.id }).members({ id: req.userid }).get({ id: true });
+
+ if (!member) {
+ throw new HTTPError("you arent a member of the guild you are trying to access", 401);
+ }
+
+ const guild = await db.data.guilds({ id: req.params.id }).get({
+ id: true,
+ name: true,
+ icon: true,
+ // icon_hash: true,
+ splash: true,
+ discovery_splash: true,
+ owner: true,
+ owner_id: true,
+ permissions: true,
+ region: true,
+ afk_channel_id: true,
+ afk_timeout: true,
+ widget_enabled: true,
+ widget_channel_id: true,
+ verification_level: true,
+ default_message_notifications: true,
+ explicit_content_filter: true,
+ roles: true,
+ emojis: true,
+ features: true,
+ mfa_level: true,
+ application_id: true,
+ system_channel_id: true,
+ system_channel_flags: true,
+ rules_channel_id: true,
+ joined_at: true,
+ // large: true,
+ // unavailable: true,
+ member_count: true,
+ // voice_states: true,
+ // members: true,
+ // channels: true,
+ // presences: true,
+ max_presences: true,
+ max_members: true,
+ vanity_url_code: true,
+ description: true,
+ banner: true,
+ premium_tier: true,
+ premium_subscription_count: true,
+ preferred_locale: true,
+ public_updates_channel_id: true,
+ max_video_channel_users: true,
+ approximate_member_count: true,
+ approximate_presence_count: true,
+ // welcome_screen: true,
+ });
+ return res.json(guild);
+});
+
+// TODO: add addGuildSchema & createGuildSchema
+// router.put("/:id", check(GuildSchema), async (req: Request, res: Response) => {});
+
+// // TODO: finish POST route
+router.post("/", check(GuildSchema), async (req: Request, res: Response) => {
+ const body = req.body as GuildSchema;
+ const guildID = Snowflake.generate();
+ const guild: Guild = {
+ ...body, // ! contains name & icon values
+ afk_channel_id: undefined,
+ afk_timeout: undefined,
+ application_id: undefined,
+ approximate_member_count: undefined,
+ approximate_presence_count: undefined,
+ banner: undefined,
+ channels: [],
+ default_message_notifications: undefined,
+ description: undefined,
+ discovery_splash: undefined,
+ emojis: [],
+ explicit_content_filter: undefined,
+ features: [],
+ // icon: undefined,
+ id: guildID,
+ // joined_at: undefined,
+ large: undefined,
+ max_members: undefined,
+ max_presences: undefined,
+ max_video_channel_users: undefined,
+ member_count: undefined,
+ members: undefined,
+ mfa_level: undefined,
+ // name: undefined,
+ owner_id: req.userid, // ! important
+ // owner: undefined,
+ permissions: undefined,
+ preferred_locale: undefined,
+ premium_subscription_count: undefined,
+ premium_tier: undefined,
+ presences: [],
+ public_updates_channel_id: undefined,
+ region: undefined,
+ roles: [],
+ rules_channel_id: undefined,
+ splash: undefined,
+ system_channel_flags: undefined,
+ system_channel_id: undefined,
+ unavailable: undefined,
+ vanity_url_code: undefined,
+ verification_level: undefined,
+ voice_states: [],
+ welcome_screen: [],
+ widget_channel_id: undefined,
+ widget_enabled: undefined,
+ };
+
+ try {
+ await db.data.guilds.push(guild);
+ } catch (error) {
+ throw new HTTPError("Couldnt create Guild", 500);
+ }
+ res.status(201).json({ id: guild.id });
+});
+
+router.delete("/:id", async (req: Request, res: Response) => {
+ const { id: guildID } = req.params;
+
+ const guild = await db.data.guilds({ id: guildID }).get({ owner_id: true });
+
+ if (!guild) {
+ throw new HTTPError("This guild doesnt exist", 404);
+ }
+
+ if (guild.owner_id !== req.userid) {
+ throw new HTTPError("You arent the owner of this guild", 401);
+ }
+
+ try {
+ await db.data.guilds({ id: guildID }).delete();
+ } catch (error) {
+ throw new HTTPError(`Couldnt delete guild: ${error}`, 500);
+ }
+
+ return res.status(204);
+});
+
export default router;
diff --git a/src/test/mongo_test.ts b/src/test/mongo_test.ts
index b3fadf5a..b2cc2bce 100644
--- a/src/test/mongo_test.ts
+++ b/src/test/mongo_test.ts
@@ -1,6 +1,6 @@
import mongoose from "mongoose";
import { Long } from "mongodb";
-import { Snowflake } from "discord-server-util";
+import { Snowflake } from "fosscord-server-util";
async function main() {
const conn = await mongoose.createConnection(
diff --git a/src/util/Config.ts b/src/util/Config.ts
index be0f4a3b..e2625aff 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";
import crypto from "crypto";
import fs from "fs";
|