feed.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. DisableHTTP2 bool
  34. }
  35. // Merge updates the fields of the given feed.
  36. func (f FeedForm) Merge(feed *model.Feed) *model.Feed {
  37. feed.Category.ID = f.CategoryID
  38. feed.Title = f.Title
  39. feed.SiteURL = f.SiteURL
  40. feed.FeedURL = f.FeedURL
  41. feed.ScraperRules = f.ScraperRules
  42. feed.RewriteRules = f.RewriteRules
  43. feed.BlocklistRules = f.BlocklistRules
  44. feed.KeeplistRules = f.KeeplistRules
  45. feed.UrlRewriteRules = f.UrlRewriteRules
  46. feed.Crawler = f.Crawler
  47. feed.UserAgent = f.UserAgent
  48. feed.Cookie = f.Cookie
  49. feed.ParsingErrorCount = 0
  50. feed.ParsingErrorMsg = ""
  51. feed.Username = f.Username
  52. feed.Password = f.Password
  53. feed.IgnoreHTTPCache = f.IgnoreHTTPCache
  54. feed.AllowSelfSignedCertificates = f.AllowSelfSignedCertificates
  55. feed.FetchViaProxy = f.FetchViaProxy
  56. feed.Disabled = f.Disabled
  57. feed.NoMediaPlayer = f.NoMediaPlayer
  58. feed.HideGlobally = f.HideGlobally
  59. feed.AppriseServiceURLs = f.AppriseServiceURLs
  60. feed.DisableHTTP2 = f.DisableHTTP2
  61. return feed
  62. }
  63. // NewFeedForm parses the HTTP request and returns a FeedForm
  64. func NewFeedForm(r *http.Request) *FeedForm {
  65. categoryID, err := strconv.Atoi(r.FormValue("category_id"))
  66. if err != nil {
  67. categoryID = 0
  68. }
  69. return &FeedForm{
  70. FeedURL: r.FormValue("feed_url"),
  71. SiteURL: r.FormValue("site_url"),
  72. Title: r.FormValue("title"),
  73. ScraperRules: r.FormValue("scraper_rules"),
  74. UserAgent: r.FormValue("user_agent"),
  75. Cookie: r.FormValue("cookie"),
  76. RewriteRules: r.FormValue("rewrite_rules"),
  77. BlocklistRules: r.FormValue("blocklist_rules"),
  78. KeeplistRules: r.FormValue("keeplist_rules"),
  79. UrlRewriteRules: r.FormValue("urlrewrite_rules"),
  80. Crawler: r.FormValue("crawler") == "1",
  81. CategoryID: int64(categoryID),
  82. Username: r.FormValue("feed_username"),
  83. Password: r.FormValue("feed_password"),
  84. IgnoreHTTPCache: r.FormValue("ignore_http_cache") == "1",
  85. AllowSelfSignedCertificates: r.FormValue("allow_self_signed_certificates") == "1",
  86. FetchViaProxy: r.FormValue("fetch_via_proxy") == "1",
  87. Disabled: r.FormValue("disabled") == "1",
  88. NoMediaPlayer: r.FormValue("no_media_player") == "1",
  89. HideGlobally: r.FormValue("hide_globally") == "1",
  90. AppriseServiceURLs: r.FormValue("apprise_service_urls"),
  91. DisableHTTP2: r.FormValue("disable_http2") == "1",
  92. }
  93. }