validator.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package validator // import "miniflux.app/v2/internal/validator"
  4. import (
  5. "fmt"
  6. "net/url"
  7. "regexp"
  8. )
  9. // ValidateRange makes sure the offset/limit values are valid.
  10. func ValidateRange(offset, limit int) error {
  11. if offset < 0 {
  12. return fmt.Errorf(`offset value should be >= 0`)
  13. }
  14. if limit < 0 {
  15. return fmt.Errorf(`limit value should be >= 0`)
  16. }
  17. return nil
  18. }
  19. // ValidateDirection makes sure the sorting direction is valid.
  20. func ValidateDirection(direction string) error {
  21. switch direction {
  22. case "asc", "desc":
  23. return nil
  24. }
  25. return fmt.Errorf(`invalid direction, valid direction values are: "asc" or "desc"`)
  26. }
  27. // IsValidRegex verifies if the regex can be compiled.
  28. func IsValidRegex(expr string) bool {
  29. _, err := regexp.Compile(expr)
  30. return err == nil
  31. }
  32. // IsValidURL verifies if the provided value is a valid absolute URL.
  33. func IsValidURL(absoluteURL string) bool {
  34. _, err := url.ParseRequestURI(absoluteURL)
  35. return err == nil
  36. }