diff options
Diffstat (limited to 'srv/src/http')
-rw-r--r-- | srv/src/http/feed.go | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/srv/src/http/feed.go b/srv/src/http/feed.go index ba8b2e6..2f1faa8 100644 --- a/srv/src/http/feed.go +++ b/srv/src/http/feed.go @@ -7,12 +7,31 @@ import ( "github.com/gorilla/feeds" "github.com/mediocregopher/blog.mediocregopher.com/srv/http/apiutil" + "github.com/mediocregopher/blog.mediocregopher.com/srv/post" ) func (a *api) renderFeedHandler() http.Handler { return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { + tag := r.FormValue("tag") + + var ( + posts []post.StoredPost + err error + ) + + if tag == "" { + posts, _, err = a.params.PostStore.Get(0, 20) + } else { + posts, err = a.params.PostStore.GetByTag(tag) + } + + if err != nil { + apiutil.InternalServerError(rw, r, fmt.Errorf("fetching recent posts: %w", err)) + return + } + author := &feeds.Author{ Name: "mediocregopher", } @@ -26,13 +45,7 @@ func (a *api) renderFeedHandler() http.Handler { Author: author, } - recentPosts, _, err := a.params.PostStore.Get(0, 20) - if err != nil { - apiutil.InternalServerError(rw, r, fmt.Errorf("fetching recent posts: %w", err)) - return - } - - for _, post := range recentPosts { + for _, post := range posts { if post.PublishedAt.After(feed.Updated) { feed.Updated = post.PublishedAt |