Website/rss.go
partisan 63c04a9b44 wip
2024-08-14 12:43:07 +02:00

67 lines
1.8 KiB
Go

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))
}