Browse Source

Use struct embedding to reduce code duplication

jvoisin 2 years ago
parent
commit
8e28e41b02
2 changed files with 21 additions and 37 deletions
  1. 1 19
      internal/model/feed.go
  2. 20 18
      internal/ui/subscription_submit.go

+ 1 - 19
internal/model/feed.go

@@ -159,25 +159,7 @@ type FeedCreationRequestFromSubscriptionDiscovery struct {
 	ETag         string
 	LastModified string
 
-	FeedURL                     string `json:"feed_url"`
-	CategoryID                  int64  `json:"category_id"`
-	UserAgent                   string `json:"user_agent"`
-	Cookie                      string `json:"cookie"`
-	Username                    string `json:"username"`
-	Password                    string `json:"password"`
-	Crawler                     bool   `json:"crawler"`
-	Disabled                    bool   `json:"disabled"`
-	NoMediaPlayer               bool   `json:"no_media_player"`
-	IgnoreHTTPCache             bool   `json:"ignore_http_cache"`
-	AllowSelfSignedCertificates bool   `json:"allow_self_signed_certificates"`
-	FetchViaProxy               bool   `json:"fetch_via_proxy"`
-	ScraperRules                string `json:"scraper_rules"`
-	RewriteRules                string `json:"rewrite_rules"`
-	BlocklistRules              string `json:"blocklist_rules"`
-	KeeplistRules               string `json:"keeplist_rules"`
-	HideGlobally                bool   `json:"hide_globally"`
-	UrlRewriteRules             string `json:"urlrewrite_rules"`
-	DisableHTTP2                bool   `json:"disable_http2"`
+	FeedCreationRequest
 }
 
 // FeedModificationRequest represents the request to update a feed.

+ 20 - 18
internal/ui/subscription_submit.go

@@ -86,24 +86,26 @@ func (h *handler) submitSubscription(w http.ResponseWriter, r *http.Request) {
 		html.OK(w, r, v.Render("add_subscription"))
 	case n == 1 && subscriptionFinder.IsFeedAlreadyDownloaded():
 		feed, localizedError := feedHandler.CreateFeedFromSubscriptionDiscovery(h.store, user.ID, &model.FeedCreationRequestFromSubscriptionDiscovery{
-			Content:                     subscriptionFinder.FeedResponseInfo().Content,
-			ETag:                        subscriptionFinder.FeedResponseInfo().ETag,
-			LastModified:                subscriptionFinder.FeedResponseInfo().LastModified,
-			CategoryID:                  subscriptionForm.CategoryID,
-			FeedURL:                     subscriptions[0].URL,
-			Crawler:                     subscriptionForm.Crawler,
-			AllowSelfSignedCertificates: subscriptionForm.AllowSelfSignedCertificates,
-			UserAgent:                   subscriptionForm.UserAgent,
-			Cookie:                      subscriptionForm.Cookie,
-			Username:                    subscriptionForm.Username,
-			Password:                    subscriptionForm.Password,
-			ScraperRules:                subscriptionForm.ScraperRules,
-			RewriteRules:                subscriptionForm.RewriteRules,
-			BlocklistRules:              subscriptionForm.BlocklistRules,
-			KeeplistRules:               subscriptionForm.KeeplistRules,
-			UrlRewriteRules:             subscriptionForm.UrlRewriteRules,
-			FetchViaProxy:               subscriptionForm.FetchViaProxy,
-			DisableHTTP2:                subscriptionForm.DisableHTTP2,
+			Content:      subscriptionFinder.FeedResponseInfo().Content,
+			ETag:         subscriptionFinder.FeedResponseInfo().ETag,
+			LastModified: subscriptionFinder.FeedResponseInfo().LastModified,
+			FeedCreationRequest: model.FeedCreationRequest{
+				CategoryID:                  subscriptionForm.CategoryID,
+				FeedURL:                     subscriptions[0].URL,
+				AllowSelfSignedCertificates: subscriptionForm.AllowSelfSignedCertificates,
+				Crawler:                     subscriptionForm.Crawler,
+				UserAgent:                   subscriptionForm.UserAgent,
+				Cookie:                      subscriptionForm.Cookie,
+				Username:                    subscriptionForm.Username,
+				Password:                    subscriptionForm.Password,
+				ScraperRules:                subscriptionForm.ScraperRules,
+				RewriteRules:                subscriptionForm.RewriteRules,
+				BlocklistRules:              subscriptionForm.BlocklistRules,
+				KeeplistRules:               subscriptionForm.KeeplistRules,
+				UrlRewriteRules:             subscriptionForm.UrlRewriteRules,
+				FetchViaProxy:               subscriptionForm.FetchViaProxy,
+				DisableHTTP2:                subscriptionForm.DisableHTTP2,
+			},
 		})
 		if localizedError != nil {
 			v.Set("form", subscriptionForm)