feed.go 3.8 KB

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