diff options
| author | Bobby <[email protected]> | 2025-07-17 18:47:30 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-07-17 18:47:30 +0530 |
| commit | 8df8cdd7e1bdefded59d073c14aa74666740be8c (patch) | |
| tree | 0af31475e1a5ffecd04a9fbce3faf5cd6bf80140 /utils/handlers | |
| parent | 3c39a30a53656fa1c51afb30bb8c07f862bd39e2 (diff) | |
| download | imageboard-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.go | 57 |
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 +} |
