aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-06-16 10:15:30 +0530
committerBobby <[email protected]>2025-06-16 10:15:30 +0530
commit34c1bbb3955629da4ab4659d70195540b08156f4 (patch)
tree8060150f095be80832ffb6b123088b624a174a75 /utils
parent782be699f797011a6e71b345658762f7e2013636 (diff)
downloadimageboard-34c1bbb3955629da4ab4659d70195540b08156f4.tar.xz
imageboard-34c1bbb3955629da4ab4659d70195540b08156f4.zip
added math and validation utils
Diffstat (limited to 'utils')
-rw-r--r--utils/math/math.go8
-rw-r--r--utils/validators/tags.go8
-rw-r--r--utils/validators/users.go31
3 files changed, 47 insertions, 0 deletions
diff --git a/utils/math/math.go b/utils/math/math.go
new file mode 100644
index 0000000..01035b9
--- /dev/null
+++ b/utils/math/math.go
@@ -0,0 +1,8 @@
+package math
+
+func GCD(a, b int) int {
+ for b != 0 {
+ a, b = b, a%b
+ }
+ return a
+}
diff --git a/utils/validators/tags.go b/utils/validators/tags.go
new file mode 100644
index 0000000..8fe8ab9
--- /dev/null
+++ b/utils/validators/tags.go
@@ -0,0 +1,8 @@
+package validators
+
+import "regexp"
+
+func IsValidTagName(tag string) bool {
+ match, _ := regexp.MatchString(`^[a-zA-Z0-9_]+$`, tag)
+ return match
+}
diff --git a/utils/validators/users.go b/utils/validators/users.go
new file mode 100644
index 0000000..70ec34d
--- /dev/null
+++ b/utils/validators/users.go
@@ -0,0 +1,31 @@
+package validators
+
+import (
+ "regexp"
+ "slices"
+ "strings"
+)
+
+func IsValidUsername(username string) bool {
+ match, _ := regexp.MatchString(`^[a-zA-Z0-9_-]+$`, username)
+ return match
+}
+
+func IsReservedUsername(username string) bool {
+ reserved := []string{
+ "admin", "administrator", "mod", "moderator", "janitor",
+ "api", "www", "mail", "email", "support", "help",
+ "about", "contact", "privacy", "terms", "tos",
+ "null", "undefined", "system", "bot", "guest",
+ "login", "register", "signup", "signin", "logout",
+ "profile", "settings", "shifoo", "deleted",
+ }
+
+ lowerUsername := strings.ToLower(username)
+ return slices.Contains(reserved, lowerUsername)
+}
+
+func IsValidEmail(email string) bool {
+ match, _ := regexp.MatchString(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`, email)
+ return match
+}