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