package handler import ( "fmt" "github.com/gorilla/feeds" "net/http" "time" ) func (h *Handler) showFeedView(w http.ResponseWriter, r *http.Request) { now := time.Now() feed := &feeds.Feed{ Title: "status.cafe", Link: &feeds.Link{Href: "https://status.cafe/"}, Author: &feeds.Author{Name: "status.cafe"}, Created: now, } statuses, err := h.storage.StatusFeed() if err != nil { serverError(w, err) return } for _, status := range statuses { if err != nil { serverError(w, err) return } feed.Items = append(feed.Items, &feeds.Item{ Title: fmt.Sprintf("%s %s %s", status.User, status.Face, truncate(status.Content, 50)), Link: &feeds.Link{Href: fmt.Sprintf("https://status.cafe/users/%s/%d", status.User, status.Id)}, Author: &feeds.Author{Name: status.User}, Content: status.Content, Created: status.CreatedAt, }) } atom, err := feed.ToAtom() if err != nil { serverError(w, err) return } w.Header().Set("Access-Control-Allow-Origin", "*") w.Header().Set("Content-Type", "application/atom+xml") w.Write([]byte(atom)) }