From c4692f72e3b0bf18f737add2bbd4e353274fe3ac Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Fri, 20 May 2022 17:51:41 -0600 Subject: [PATCH] Add tag parameter to feed endpoint --- srv/src/http/feed.go | 27 ++++++++++++++++++++------- 1 file 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