|
|
|
@ -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 |
|
|
|
|