aboutsummaryrefslogtreecommitdiff
path: root/utils/handlers
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-07-17 18:47:30 +0530
committerBobby <[email protected]>2025-07-17 18:47:30 +0530
commit8df8cdd7e1bdefded59d073c14aa74666740be8c (patch)
tree0af31475e1a5ffecd04a9fbce3faf5cd6bf80140 /utils/handlers
parent3c39a30a53656fa1c51afb30bb8c07f862bd39e2 (diff)
downloadimageboard-8df8cdd7e1bdefded59d073c14aa74666740be8c.tar.xz
imageboard-8df8cdd7e1bdefded59d073c14aa74666740be8c.zip
tags and ratings filter in posts, uploads progress
Diffstat (limited to 'utils/handlers')
-rw-r--r--utils/handlers/req_map.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/utils/handlers/req_map.go b/utils/handlers/req_map.go
new file mode 100644
index 0000000..2b1145c
--- /dev/null
+++ b/utils/handlers/req_map.go
@@ -0,0 +1,57 @@
+package handlers
+
+import (
+ "imageboard/config"
+ "strings"
+)
+
+func ExtractRatingsAndMap(queryParams []config.QueryParam) ([]config.Rating, map[string]bool) {
+ var ratings []config.Rating
+ ratingsMap := map[string]bool{}
+ for _, param := range queryParams {
+ if param.Key == "rating" {
+ switch strings.ToLower(param.Value) {
+ case "safe":
+ ratings = append(ratings, config.RatingSafe)
+ ratingsMap["Safe"] = true
+ case "questionable":
+ ratings = append(ratings, config.RatingQuestionable)
+ ratingsMap["Questionable"] = true
+ case "sensitive":
+ ratings = append(ratings, config.RatingSensitive)
+ ratingsMap["Sensitive"] = true
+ case "explicit":
+ ratings = append(ratings, config.RatingExplicit)
+ ratingsMap["Explicit"] = true
+ }
+ }
+ }
+ if len(ratings) == 0 {
+ ratings = []config.Rating{
+ config.RatingSafe,
+ config.RatingQuestionable,
+ config.RatingSensitive,
+ }
+ ratingsMap["Safe"] = true
+ ratingsMap["Questionable"] = true
+ ratingsMap["Sensitive"] = true
+ }
+ return ratings, ratingsMap
+}
+
+func ExtractQueryTags(queryParams []config.QueryParam) (string, []string) {
+ for _, param := range queryParams {
+ if param.Key == "tags" {
+ tags := strings.TrimSpace(param.Value)
+ if tags == "" {
+ return "", nil
+ }
+ tagList := strings.Split(tags, ",")
+ for i := range tagList {
+ tagList[i] = strings.TrimSpace(tagList[i])
+ }
+ return tags, tagList
+ }
+ }
+ return "", nil
+}