Refactor handleFunc for chaining middlewares

This commit is contained in:
Tim Van Baak 2025-02-05 20:44:03 -08:00
parent 2894493d34
commit 6c6bde42a1

View File

@ -19,23 +19,30 @@ func logged(handler http.HandlerFunc) http.HandlerFunc {
} }
} }
func handleFunc(pattern string, handler http.HandlerFunc) { func handleFunc(
http.HandleFunc(pattern, logged(handler)) pattern string,
handler http.HandlerFunc,
middlewares ...func(http.HandlerFunc) http.HandlerFunc,
) {
for _, middleware := range middlewares {
handler = middleware(handler)
}
http.HandleFunc(pattern, handler)
} }
func RunServer(db core.DB, addr string, port string) { func RunServer(db core.DB, addr string, port string) {
env := &Env{db} env := &Env{db}
bind := net.JoinHostPort(addr, port) bind := net.JoinHostPort(addr, port)
handleFunc("GET /", env.getRoot) handleFunc("GET /", env.getRoot, logged)
handleFunc("GET /style.css", env.getStyle) handleFunc("GET /style.css", env.getStyle, logged)
handleFunc("GET /htmx.org@2.0.4.js", env.getScript) handleFunc("GET /htmx.org@2.0.4.js", env.getScript, logged)
handleFunc("GET /source/{source}", env.getSource) handleFunc("GET /source/{source}", env.getSource, logged)
handleFunc("GET /channel/{channel}", env.getChannel) handleFunc("GET /channel/{channel}", env.getChannel, logged)
handleFunc("GET /item/{source}/{id}", env.getItem) handleFunc("GET /item/{source}/{id}", env.getItem, logged)
handleFunc("DELETE /item/{source}/{id}", env.deleteItem) handleFunc("DELETE /item/{source}/{id}", env.deleteItem, logged)
handleFunc("POST /item/{source}/{id}/action/{action}", env.doAction) handleFunc("POST /item/{source}/{id}/action/{action}", env.doAction, logged)
handleFunc("POST /mass-deactivate", env.massDeactivate) handleFunc("POST /mass-deactivate", env.massDeactivate, logged)
log.Fatal(http.ListenAndServe(bind, nil)) log.Fatal(http.ListenAndServe(bind, nil))
} }