forked from cadey/xesite
68 lines
1.8 KiB
Go
68 lines
1.8 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"time"
|
||
|
|
||
|
"github.com/Xe/ln"
|
||
|
"github.com/gorilla/feeds"
|
||
|
)
|
||
|
|
||
|
var bootTime = time.Now()
|
||
|
|
||
|
var feed = &feeds.Feed{
|
||
|
Title: "Christine Dodrill's Blog",
|
||
|
Link: &feeds.Link{Href: "https://christine.website/blog"},
|
||
|
Description: "My blog posts and rants about various technology things.",
|
||
|
Author: &feeds.Author{Name: "Christine Dodrill", Email: "me@christine.website"},
|
||
|
Created: bootTime,
|
||
|
Copyright: "This work is copyright Christine Dodrill. My viewpoints are my own and not the view of any employer past, current or future.",
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
for _, item := range posts {
|
||
|
itime, _ := time.Parse("2006-01-02", item.Date)
|
||
|
feed.Items = append(feed.Items, &feeds.Item{
|
||
|
Title: item.Title,
|
||
|
Link: &feeds.Link{Href: "https://christine.website/" + item.Link},
|
||
|
Description: item.Summary,
|
||
|
Created: itime,
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// IncrediblySecureSalt *******
|
||
|
const IncrediblySecureSalt = "hunter2"
|
||
|
|
||
|
func createFeed(w http.ResponseWriter, r *http.Request) {
|
||
|
w.Header().Set("Content-Type", "application/rss+xml")
|
||
|
w.Header().Set("ETag", Hash(bootTime.String(), IncrediblySecureSalt))
|
||
|
|
||
|
err := feed.WriteRss(w)
|
||
|
if err != nil {
|
||
|
http.Error(w, "Internal server error", http.StatusInternalServerError)
|
||
|
ln.Error(err, ln.F{
|
||
|
"remote_addr": r.RemoteAddr,
|
||
|
"action": "generating_rss",
|
||
|
"uri": r.RequestURI,
|
||
|
"host": r.Host,
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func createAtom(w http.ResponseWriter, r *http.Request) {
|
||
|
w.Header().Set("Content-Type", "application/atom+xml")
|
||
|
w.Header().Set("ETag", Hash(bootTime.String(), IncrediblySecureSalt))
|
||
|
|
||
|
err := feed.WriteAtom(w)
|
||
|
if err != nil {
|
||
|
http.Error(w, "Internal server error", http.StatusInternalServerError)
|
||
|
ln.Error(err, ln.F{
|
||
|
"remote_addr": r.RemoteAddr,
|
||
|
"action": "generating_rss",
|
||
|
"uri": r.RequestURI,
|
||
|
"host": r.Host,
|
||
|
})
|
||
|
}
|
||
|
}
|