feed.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
  2. // SPDX-License-Identifier: Apache-2.0
  3. package form // import "miniflux.app/v2/internal/ui/form"
  4. import (
  5. "net/http"
  6. "strconv"
  7. "miniflux.app/v2/internal/model"
  8. )
  9. // FeedForm represents a feed form in the UI
  10. type FeedForm struct {
  11. FeedURL string
  12. SiteURL string
  13. Title string
  14. ScraperRules string
  15. RewriteRules string
  16. BlocklistRules string
  17. KeeplistRules string
  18. UrlRewriteRules string
  19. Crawler bool
  20. UserAgent string
  21. Cookie string
  22. CategoryID int64
  23. Username string
  24. Password string
  25. IgnoreHTTPCache bool
  26. AllowSelfSignedCertificates bool
  27. FetchViaProxy bool
  28. Disabled bool
  29. NoMediaPlayer bool
  30. HideGlobally bool
  31. CategoryHidden bool // Category has "hide_globally"
  32. AppriseServiceURLs string
  33. }
  34. // Merge updates the fields of the given feed.
  35. func (f FeedForm) Merge(feed *model.Feed) *model.Feed {
  36. feed.Category.ID = f.CategoryID
  37. feed.Title = f.Title
  38. feed.SiteURL = f.SiteURL
  39. feed.FeedURL = f.FeedURL
  40. feed.ScraperRules = f.ScraperRules
  41. feed.RewriteRules = f.RewriteRules
  42. feed.BlocklistRules = f.BlocklistRules
  43. feed.KeeplistRules = f.KeeplistRules
  44. feed.UrlRewriteRules = f.UrlRewriteRules
  45. feed.Crawler = f.Crawler
  46. feed.UserAgent = f.UserAgent
  47. feed.Cookie = f.Cookie
  48. feed.ParsingErrorCount = 0
  49. feed.ParsingErrorMsg = ""
  50. feed.Username = f.Username
  51. feed.Password = f.Password
  52. feed.IgnoreHTTPCache = f.IgnoreHTTPCache
  53. feed.AllowSelfSignedCertificates = f.AllowSelfSignedCertificates
  54. feed.FetchViaProxy = f.FetchViaProxy
  55. feed.Disabled = f.Disabled
  56. feed.NoMediaPlayer = f.NoMediaPlayer
  57. feed.HideGlobally = f.HideGlobally
  58. feed.AppriseServiceURLs = f.AppriseServiceURLs
  59. return feed
  60. }
  61. // NewFeedForm parses the HTTP request and returns a FeedForm
  62. func NewFeedForm(r *http.Request) *FeedForm {
  63. categoryID, err := strconv.Atoi(r.FormValue("category_id"))
  64. if err != nil {
  65. categoryID = 0
  66. }
  67. return &FeedForm{
  68. FeedURL: r.FormValue("feed_url"),
  69. SiteURL: r.FormValue("site_url"),
  70. Title: r.FormValue("title"),
  71. ScraperRules: r.FormValue("scraper_rules"),
  72. UserAgent: r.FormValue("user_agent"),
  73. Cookie: r.FormValue("cookie"),
  74. RewriteRules: r.FormValue("rewrite_rules"),
  75. BlocklistRules: r.FormValue("blocklist_rules"),
  76. KeeplistRules: r.FormValue("keeplist_rules"),
  77. UrlRewriteRules: r.FormValue("urlrewrite_rules"),
  78. Crawler: r.FormValue("crawler") == "1",
  79. CategoryID: int64(categoryID),
  80. Username: r.FormValue("feed_username"),
  81. Password: r.FormValue("feed_password"),
  82. IgnoreHTTPCache: r.FormValue("ignore_http_cache") == "1",
  83. AllowSelfSignedCertificates: r.FormValue("allow_self_signed_certificates") == "1",
  84. FetchViaProxy: r.FormValue("fetch_via_proxy") == "1",
  85. Disabled: r.FormValue("disabled") == "1",
  86. NoMediaPlayer: r.FormValue("no_media_player") == "1",
  87. HideGlobally: r.FormValue("hide_globally") == "1",
  88. AppriseServiceURLs: r.FormValue("apprise_service_urls"),
  89. }
  90. }