validators.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package config // import "miniflux.app/v2/internal/config"
  4. import (
  5. "fmt"
  6. "slices"
  7. "strconv"
  8. "strings"
  9. )
  10. func validateChoices(rawValue string, choices []string) error {
  11. if !slices.Contains(choices, rawValue) {
  12. return fmt.Errorf("value must be one of: %v", strings.Join(choices, ", "))
  13. }
  14. return nil
  15. }
  16. func validateListChoices(inputValues, choices []string) error {
  17. for _, value := range inputValues {
  18. if !slices.Contains(choices, value) {
  19. return fmt.Errorf("value must be one of: %v", strings.Join(choices, ", "))
  20. }
  21. }
  22. return nil
  23. }
  24. func validateGreaterThan(rawValue string, min int) error {
  25. intValue, err := strconv.Atoi(rawValue)
  26. if err != nil {
  27. return fmt.Errorf("value must be an integer")
  28. }
  29. if intValue > min {
  30. return nil
  31. }
  32. return fmt.Errorf("value must be at least %d", min)
  33. }
  34. func validateGreaterOrEqualThan(rawValue string, min int) error {
  35. intValue, err := strconv.Atoi(rawValue)
  36. if err != nil {
  37. return fmt.Errorf("value must be an integer")
  38. }
  39. if intValue >= min {
  40. return nil
  41. }
  42. return fmt.Errorf("value must be greater or equal than %d", min)
  43. }
  44. func validateRange(rawValue string, min, max int) error {
  45. intValue, err := strconv.Atoi(rawValue)
  46. if err != nil {
  47. return fmt.Errorf("value must be an integer")
  48. }
  49. if intValue < min || intValue > max {
  50. return fmt.Errorf("value must be between %d and %d", min, max)
  51. }
  52. return nil
  53. }