summary refs log tree commit diff
path: root/api
diff options
context:
space:
mode:
authorSamuel <34555296+Flam3rboy@users.noreply.github.com>2021-11-29 20:41:59 +0100
committerGitHub <noreply@github.com>2021-11-29 20:41:59 +0100
commit7b2444fff1c80ebfe229c06ae18243c59aa0c5a9 (patch)
tree61341aa3fee6c64ceb3db60006e6fd1b80881d2a /api
parentMerge pull request #518 from Xenorio/master (diff)
parentsnowflake-based invite generation (diff)
downloadserver-7b2444fff1c80ebfe229c06ae18243c59aa0c5a9.tar.xz
Merge pull request #519 from erkinalp/master
Snowflake-based invite generation
Diffstat (limited to 'api')
-rw-r--r--api/src/util/RandomInviteID.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/api/src/util/RandomInviteID.ts b/api/src/util/RandomInviteID.ts
index b37994d8..45450b0d 100644
--- a/api/src/util/RandomInviteID.ts
+++ b/api/src/util/RandomInviteID.ts
@@ -1,3 +1,5 @@
+import { Snowflake } from "@fosscord/util";
+
 export function random(length = 6) {
 	// Declare all characters
 	let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
@@ -10,3 +12,20 @@ export function random(length = 6) {
 
 	return str;
 }
+
+export function snowflakeBasedInvite() {
+	// Declare all characters
+	let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+	
+	let snowflake = Snowflake.generateWorkerProcess();
+	
+	// snowflakes hold ~10.75 characters worth of entropy;
+	// safe to generate a 8-char invite out of them
+	let str = "";
+	for (let i=0; i < 10; i++) {
+		str += chars.charAt((snowflake % chars.length));
+		snowflake /= chars.length;
+	}
+	
+	return str.substr(3,8).reverse(); // little-endianise for entropy
+}