diff --git a/api/router.go b/api/router.go index 6eea7d2..af4ff83 100644 --- a/api/router.go +++ b/api/router.go @@ -15,6 +15,7 @@ import ( "git.oblat.lv/alex/triggerssmith/internal/acl" "git.oblat.lv/alex/triggerssmith/internal/auth" "git.oblat.lv/alex/triggerssmith/internal/config" + "git.oblat.lv/alex/triggerssmith/internal/server" "git.oblat.lv/alex/triggerssmith/internal/vars" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" @@ -59,6 +60,7 @@ func NewRouter(deps RouterDependencies) *Router { // RouteHandler sets up the routes and middleware for the router. // TODO: implement hot reload for static files enabled/disabled func (r *Router) MustRoute() chi.Router { + r.r.Use(middleware.RealIP) r.r.Use(middleware.Logger) r.r.Use(middleware.Recoverer) r.r.Use(middleware.Timeout(r.cfg.Server.TimeoutSeconds)) @@ -106,6 +108,14 @@ func (r *Router) MustRoute() chi.Router { }) w.Write([]byte(b)) }) + r.r.NotFound(func(w http.ResponseWriter, req *http.Request) { + w.Header().Set("Content-Type", "application/problem+json") + server.WriteProblem(w, http.StatusNotFound, "/errors/not-found", "Not found", "Requested page not found", req) + }) + r.r.MethodNotAllowed(func(w http.ResponseWriter, req *http.Request) { + w.Header().Set("Content-Type", "application/problem+json") + server.WriteProblem(w, http.StatusMethodNotAllowed, "/errors/method-not-allowed", "Method not allowed", "Requested method not allowed", req) + }) //r.r.Handle("/invoke/function/{function_id}/{function_version}", invoke.InvokeHandler(r.cfg)) return r.r }