4
0

validators.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. "errors"
  6. "fmt"
  7. "slices"
  8. "strconv"
  9. "strings"
  10. )
  11. func validateChoices(rawValue string, choices []string) error {
  12. if !slices.Contains(choices, rawValue) {
  13. return fmt.Errorf("value must be one of: %v", strings.Join(choices, ", "))
  14. }
  15. return nil
  16. }
  17. func validateListChoices(inputValues, choices []string) error {
  18. for _, value := range inputValues {
  19. if err := validateChoices(value, choices); err != nil {
  20. return err
  21. }
  22. }
  23. return nil
  24. }
  25. func validateGreaterThan(rawValue string, min int) error {
  26. intValue, err := strconv.Atoi(rawValue)
  27. if err != nil {
  28. return errors.New("value must be an integer")
  29. }
  30. if intValue > min {
  31. return nil
  32. }
  33. return fmt.Errorf("value must be at least %d", min)
  34. }
  35. func validateGreaterOrEqualThan(rawValue string, min int) error {
  36. intValue, err := strconv.Atoi(rawValue)
  37. if err != nil {
  38. return errors.New("value must be an integer")
  39. }
  40. if intValue >= min {
  41. return nil
  42. }
  43. return fmt.Errorf("value must be greater or equal than %d", min)
  44. }
  45. func validateRange(rawValue string, min, max int) error {
  46. intValue, err := strconv.Atoi(rawValue)
  47. if err != nil {
  48. return errors.New("value must be an integer")
  49. }
  50. if intValue < min || intValue > max {
  51. return fmt.Errorf("value must be between %d and %d", min, max)
  52. }
  53. return nil
  54. }