feed.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // Copyright 2017 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package form // import "miniflux.app/ui/form"
  5. import (
  6. "net/http"
  7. "strconv"
  8. "miniflux.app/errors"
  9. "miniflux.app/model"
  10. )
  11. // FeedForm represents a feed form in the UI
  12. type FeedForm struct {
  13. FeedURL string
  14. SiteURL string
  15. Title string
  16. ScraperRules string
  17. RewriteRules string
  18. Crawler bool
  19. UserAgent string
  20. CategoryID int64
  21. Username string
  22. Password string
  23. IgnoreHTTPCache bool
  24. Disabled bool
  25. }
  26. // ValidateModification validates FeedForm fields
  27. func (f FeedForm) ValidateModification() error {
  28. if f.FeedURL == "" || f.SiteURL == "" || f.Title == "" || f.CategoryID == 0 {
  29. return errors.NewLocalizedError("error.fields_mandatory")
  30. }
  31. return nil
  32. }
  33. // Merge updates the fields of the given feed.
  34. func (f FeedForm) Merge(feed *model.Feed) *model.Feed {
  35. feed.Category.ID = f.CategoryID
  36. feed.Title = f.Title
  37. feed.SiteURL = f.SiteURL
  38. feed.FeedURL = f.FeedURL
  39. feed.ScraperRules = f.ScraperRules
  40. feed.RewriteRules = f.RewriteRules
  41. feed.Crawler = f.Crawler
  42. feed.UserAgent = f.UserAgent
  43. feed.ParsingErrorCount = 0
  44. feed.ParsingErrorMsg = ""
  45. feed.Username = f.Username
  46. feed.Password = f.Password
  47. feed.IgnoreHTTPCache = f.IgnoreHTTPCache
  48. feed.Disabled = f.Disabled
  49. return feed
  50. }
  51. // NewFeedForm parses the HTTP request and returns a FeedForm
  52. func NewFeedForm(r *http.Request) *FeedForm {
  53. categoryID, err := strconv.Atoi(r.FormValue("category_id"))
  54. if err != nil {
  55. categoryID = 0
  56. }
  57. return &FeedForm{
  58. FeedURL: r.FormValue("feed_url"),
  59. SiteURL: r.FormValue("site_url"),
  60. Title: r.FormValue("title"),
  61. ScraperRules: r.FormValue("scraper_rules"),
  62. UserAgent: r.FormValue("user_agent"),
  63. RewriteRules: r.FormValue("rewrite_rules"),
  64. Crawler: r.FormValue("crawler") == "1",
  65. CategoryID: int64(categoryID),
  66. Username: r.FormValue("feed_username"),
  67. Password: r.FormValue("feed_password"),
  68. IgnoreHTTPCache: r.FormValue("ignore_http_cache") == "1",
  69. Disabled: r.FormValue("disabled") == "1",
  70. }
  71. }