feed.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package validator // import "miniflux.app/validator"
  4. import (
  5. "miniflux.app/model"
  6. "miniflux.app/storage"
  7. )
  8. // ValidateFeedCreation validates feed creation.
  9. func ValidateFeedCreation(store *storage.Storage, userID int64, request *model.FeedCreationRequest) *ValidationError {
  10. if request.FeedURL == "" || request.CategoryID <= 0 {
  11. return NewValidationError("error.feed_mandatory_fields")
  12. }
  13. if !IsValidURL(request.FeedURL) {
  14. return NewValidationError("error.invalid_feed_url")
  15. }
  16. if store.FeedURLExists(userID, request.FeedURL) {
  17. return NewValidationError("error.feed_already_exists")
  18. }
  19. if !store.CategoryIDExists(userID, request.CategoryID) {
  20. return NewValidationError("error.feed_category_not_found")
  21. }
  22. if !IsValidRegex(request.BlocklistRules) {
  23. return NewValidationError("error.feed_invalid_blocklist_rule")
  24. }
  25. if !IsValidRegex(request.KeeplistRules) {
  26. return NewValidationError("error.feed_invalid_keeplist_rule")
  27. }
  28. return nil
  29. }
  30. // ValidateFeedModification validates feed modification.
  31. func ValidateFeedModification(store *storage.Storage, userID int64, request *model.FeedModificationRequest) *ValidationError {
  32. if request.FeedURL != nil {
  33. if *request.FeedURL == "" {
  34. return NewValidationError("error.feed_url_not_empty")
  35. }
  36. if !IsValidURL(*request.FeedURL) {
  37. return NewValidationError("error.invalid_feed_url")
  38. }
  39. }
  40. if request.SiteURL != nil {
  41. if *request.SiteURL == "" {
  42. return NewValidationError("error.site_url_not_empty")
  43. }
  44. if !IsValidURL(*request.SiteURL) {
  45. return NewValidationError("error.invalid_site_url")
  46. }
  47. }
  48. if request.Title != nil {
  49. if *request.Title == "" {
  50. return NewValidationError("error.feed_title_not_empty")
  51. }
  52. }
  53. if request.CategoryID != nil {
  54. if !store.CategoryIDExists(userID, *request.CategoryID) {
  55. return NewValidationError("error.feed_category_not_found")
  56. }
  57. }
  58. if request.BlocklistRules != nil {
  59. if !IsValidRegex(*request.BlocklistRules) {
  60. return NewValidationError("error.feed_invalid_blocklist_rule")
  61. }
  62. }
  63. if request.KeeplistRules != nil {
  64. if !IsValidRegex(*request.KeeplistRules) {
  65. return NewValidationError("error.feed_invalid_keeplist_rule")
  66. }
  67. }
  68. return nil
  69. }