feed.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. Disabled bool
  24. }
  25. // ValidateModification validates FeedForm fields
  26. func (f FeedForm) ValidateModification() error {
  27. if f.FeedURL == "" || f.SiteURL == "" || f.Title == "" || f.CategoryID == 0 {
  28. return errors.NewLocalizedError("error.fields_mandatory")
  29. }
  30. return nil
  31. }
  32. // Merge updates the fields of the given feed.
  33. func (f FeedForm) Merge(feed *model.Feed) *model.Feed {
  34. feed.Category.ID = f.CategoryID
  35. feed.Title = f.Title
  36. feed.SiteURL = f.SiteURL
  37. feed.FeedURL = f.FeedURL
  38. feed.ScraperRules = f.ScraperRules
  39. feed.RewriteRules = f.RewriteRules
  40. feed.Crawler = f.Crawler
  41. feed.UserAgent = f.UserAgent
  42. feed.ParsingErrorCount = 0
  43. feed.ParsingErrorMsg = ""
  44. feed.Username = f.Username
  45. feed.Password = f.Password
  46. feed.Disabled = f.Disabled
  47. return feed
  48. }
  49. // NewFeedForm parses the HTTP request and returns a FeedForm
  50. func NewFeedForm(r *http.Request) *FeedForm {
  51. categoryID, err := strconv.Atoi(r.FormValue("category_id"))
  52. if err != nil {
  53. categoryID = 0
  54. }
  55. return &FeedForm{
  56. FeedURL: r.FormValue("feed_url"),
  57. SiteURL: r.FormValue("site_url"),
  58. Title: r.FormValue("title"),
  59. ScraperRules: r.FormValue("scraper_rules"),
  60. UserAgent: r.FormValue("user_agent"),
  61. RewriteRules: r.FormValue("rewrite_rules"),
  62. Crawler: r.FormValue("crawler") == "1",
  63. CategoryID: int64(categoryID),
  64. Username: r.FormValue("feed_username"),
  65. Password: r.FormValue("feed_password"),
  66. Disabled: r.FormValue("disabled") == "1",
  67. }
  68. }