Implement post deleting
This commit is contained in:
parent
1242be7cfe
commit
0bc0204f0b
@ -213,7 +213,12 @@ func (a *api) handler() http.Handler {
|
||||
v2Mux := http.NewServeMux()
|
||||
v2Mux.Handle("/follow.html", a.renderDumbTplHandler("follow.html"))
|
||||
v2Mux.Handle("/posts/", http.StripPrefix("/posts",
|
||||
a.renderPostHandler(),
|
||||
apiutil.MethodMux(map[string]http.Handler{
|
||||
"GET": a.renderPostHandler(),
|
||||
"DELETE": authMiddleware(auther,
|
||||
formMiddleware(a.deletePostHandler()),
|
||||
),
|
||||
}),
|
||||
))
|
||||
v2Mux.Handle("/assets/", http.StripPrefix("/assets",
|
||||
apiutil.MethodMux(map[string]http.Handler{
|
||||
|
@ -137,3 +137,31 @@ func (a *api) renderPostsIndexHandler() http.Handler {
|
||||
executeTemplate(rw, r, tpl, tplPayload)
|
||||
})
|
||||
}
|
||||
|
||||
func (a *api) deletePostHandler() http.Handler {
|
||||
|
||||
return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
|
||||
|
||||
id := filepath.Base(r.URL.Path)
|
||||
|
||||
if id == "" {
|
||||
apiutil.BadRequest(rw, r, errors.New("id is required"))
|
||||
return
|
||||
}
|
||||
|
||||
err := a.params.PostStore.Delete(id)
|
||||
|
||||
if errors.Is(err, post.ErrPostNotFound) {
|
||||
http.Error(rw, "Post not found", 404)
|
||||
return
|
||||
} else if err != nil {
|
||||
apiutil.InternalServerError(
|
||||
rw, r, fmt.Errorf("deleting post with id %q: %w", id, err),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
a.executeRedirectTpl(rw, r, "posts/")
|
||||
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user