package main import ( "fmt" "net/http" "time" "github.com/gorilla/feeds" ) func generateRSSFeed(w http.ResponseWriter, blogs []Blog, siteURL string) { feed := &feeds.Feed{ Title: "My Blog", Link: &feeds.Link{Href: siteURL}, Description: "A blog about various topics.", Author: &feeds.Author{Name: "Your Name", Email: "your-email@example.com"}, Created: time.Now(), } for _, blog := range blogs { for _, entry := range blog.Entries { feed.Items = append(feed.Items, &feeds.Item{ Title: fmt.Sprintf("Entry %d", entry.Number), // Use entry number as title Link: &feeds.Link{Href: fmt.Sprintf("%s/%s/%d", siteURL, blog.Name, entry.Number)}, Description: entry.Content, Created: entry.Date, }) } } rss, err := feed.ToRss() if err != nil { http.Error(w, "Error generating RSS feed", http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/rss+xml") w.Write([]byte(rss)) } func generateBlogRSSFeed(w http.ResponseWriter, blog Blog, siteURL string) { feed := &feeds.Feed{ Title: blog.Name, Link: &feeds.Link{Href: fmt.Sprintf("%s/%s", siteURL, blog.Name)}, Description: blog.Name, Author: &feeds.Author{Name: "Your Name", Email: "your-email@example.com"}, Created: time.Now(), } for _, entry := range blog.Entries { feed.Items = append(feed.Items, &feeds.Item{ Title: fmt.Sprintf("Entry %d", entry.Number), // Use entry number as title Link: &feeds.Link{Href: fmt.Sprintf("%s/%s/%d", siteURL, blog.Name, entry.Number)}, Description: entry.Content, Created: entry.Date, }) } rss, err := feed.ToRss() if err != nil { http.Error(w, "Error generating RSS feed", http.StatusInternalServerError) return } w.Header().Set("Content-Type", "application/rss+xml") w.Write([]byte(rss)) }