diff --git a/internal/api/v1/auth/auth.go b/internal/api/v1/auth/auth.go index bbbd6c3..86839cf 100644 --- a/internal/api/v1/auth/auth.go +++ b/internal/api/v1/auth/auth.go @@ -104,7 +104,7 @@ func RequireAuth(next http.HandlerFunc) http.HandlerFunc { func checkToken(w http.ResponseWriter, r *http.Request) (ok bool) { tokenCookie, err := r.Cookie("token") if err != nil { - U.HandleErr(w, r, E.PrependSubject("token", err), http.StatusUnauthorized) + U.RespondError(w, E.New("missing token"), http.StatusUnauthorized) return false } var claims Claims @@ -127,7 +127,7 @@ func checkToken(w http.ResponseWriter, r *http.Request) (ok bool) { } if err != nil { - U.HandleErr(w, r, err, http.StatusForbidden) + U.RespondError(w, err, http.StatusForbidden) return false } diff --git a/internal/api/v1/list.go b/internal/api/v1/list.go index 02c4b8b..3e5665b 100644 --- a/internal/api/v1/list.go +++ b/internal/api/v1/list.go @@ -34,7 +34,7 @@ func List(w http.ResponseWriter, r *http.Request) { switch what { case ListRoute: if route := listRoute(which); route == nil { - http.Error(w, "not found", http.StatusNotFound) + http.NotFound(w, r) return } else { U.RespondJSON(w, r, route) @@ -59,10 +59,7 @@ func List(w http.ResponseWriter, r *http.Request) { } func listRoute(which string) any { - if which == "" { - which = "all" - } - if which == "all" { + if which == "" || which == "all" { return config.RoutesByAlias() } routes := config.RoutesByAlias() diff --git a/internal/api/v1/utils/error.go b/internal/api/v1/utils/error.go index 5e72198..3f095db 100644 --- a/internal/api/v1/utils/error.go +++ b/internal/api/v1/utils/error.go @@ -12,23 +12,22 @@ import ( // http.StatusInternalServerError is used. // // The error is only logged but not returned to the client. -func HandleErr(w http.ResponseWriter, r *http.Request, origErr error, code ...int) { - if origErr == nil { +func HandleErr(w http.ResponseWriter, r *http.Request, err error, code ...int) { + if err == nil { return } - LogError(r).Msg(origErr.Error()) - statusCode := http.StatusInternalServerError - if len(code) > 0 { - statusCode = code[0] + LogError(r).Msg(err.Error()) + if len(code) == 0 { + code = []int{http.StatusInternalServerError} } - http.Error(w, http.StatusText(statusCode), statusCode) + http.Error(w, http.StatusText(code[0]), code[0]) } func RespondError(w http.ResponseWriter, err error, code ...int) { - if len(code) > 0 { - w.WriteHeader(code[0]) + if len(code) == 0 { + code = []int{http.StatusBadRequest} } - WriteBody(w, []byte(ansi.StripANSI(err.Error()))) + http.Error(w, ansi.StripANSI(err.Error()), code[0]) } func ErrMissingKey(k string) error { diff --git a/internal/api/v1/utils/logging.go b/internal/api/v1/utils/logging.go index d8388fd..ac795b8 100644 --- a/internal/api/v1/utils/logging.go +++ b/internal/api/v1/utils/logging.go @@ -8,9 +8,10 @@ import ( ) func reqLogger(r *http.Request, level zerolog.Level) *zerolog.Event { - return logging.WithLevel(level).Str("module", "api"). - Str("method", r.Method). - Str("path", r.RequestURI) + return logging.WithLevel(level). + Str("module", "api"). + Str("remote", r.RemoteAddr). + Str("uri", r.Method+" "+r.RequestURI) } func LogError(r *http.Request) *zerolog.Event { return reqLogger(r, zerolog.ErrorLevel) }