diff options
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/format/image.go | 14 | ||||
| -rw-r--r-- | utils/format/numbers.go | 9 | ||||
| -rw-r--r-- | utils/handlers/req_map.go | 57 |
3 files changed, 80 insertions, 0 deletions
diff --git a/utils/format/image.go b/utils/format/image.go new file mode 100644 index 0000000..b68271c --- /dev/null +++ b/utils/format/image.go @@ -0,0 +1,14 @@ +package format + +import ( + "imageboard/config" + "strings" +) + +func GetCDNURL() string { + cdnURL := strings.TrimRight(config.S3.PublicURL, "/") + "/" + config.S3.BucketName + if config.S3.FolderPath != "" { + cdnURL += "/" + config.S3.FolderPath + } + return cdnURL +} diff --git a/utils/format/numbers.go b/utils/format/numbers.go index 8f546f1..b1561e5 100644 --- a/utils/format/numbers.go +++ b/utils/format/numbers.go @@ -18,3 +18,12 @@ func Int64ToString(value int64) string { } return fmt.Sprintf("%d", value) } + +func StringToUint(value string) (uint, error) { + var uintValue uint + _, err := fmt.Sscanf(value, "%d", &uintValue) + if err != nil { + return 0, fmt.Errorf("invalid string to uint conversion: %w", err) + } + return uintValue, nil +} 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 +} |
