diff --git a/controllers/blog.go b/controllers/blog.go index 6c519be..97e907d 100644 --- a/controllers/blog.go +++ b/controllers/blog.go @@ -17,6 +17,7 @@ along with this program. If not, see .Rawley Fow import ( "net/http" + "text/template" "github.com/gin-gonic/gin" "github.com/rawleyfowler/rawleydotxyz/repos" @@ -40,6 +41,8 @@ func RegisterBlogGroup(r *gin.RouterGroup) { c := NewBlogController(repos.NewBlogRepo("dsn")) r.GET("/", c.IndexBlogPage) r.GET("/post/:url", c.IndividualBlogPage) + // RSS Feed + r.GET("/feed", c.RSSFeed) } func (bc *BlogController) IndexBlogPage(c *gin.Context) { @@ -60,3 +63,22 @@ func (bc *BlogController) IndividualBlogPage(c *gin.Context) { } c.HTML(http.StatusOK, "blog_post.tmpl", post) } + +func (bc *BlogController) RSSFeed(c *gin.Context) { + posts, err := bc.Repository.GetAllBlogPosts() + if err != nil { + c.HTML(http.StatusInternalServerError, "internal_server_error.tmpl", &gin.H{}) + return + } + t, err := template.ParseFiles("templates/rss.tmpl") + if err != nil { + c.HTML(http.StatusInternalServerError, "internal_server_error", &gin.H{}) + return + } + c.Header("Content-Type", "text/xml") + err = t.Execute(c.Writer, posts) + if err != nil { + c.HTML(http.StatusInternalServerError, "internal_server_error", &gin.H{}) + return + } +} diff --git a/templates/rss.tmpl b/templates/rss.tmpl new file mode 100644 index 0000000..3709a5d --- /dev/null +++ b/templates/rss.tmpl @@ -0,0 +1,27 @@ + + + + rawley.xyz + https://www.rawley.xyz + + Rawley's music and tech blog. + + en-us + + rawley.xyz + https://www.rawley.xyz + https://rss.com/blog/wp-content/uploads/2019/10/social_style_3_rss-512-1.png + 150 + 150 + + + {{range $post := .}} + + {{$post.Title}} + {{$post.Date}} + https://rawley.xyz/blog/post/{{$val.Url}} + + rawleyfowler@gmail.com + + {{end}} +