From a18ad1e35141ba330cb5ea042701eb87d497ae7d Mon Sep 17 00:00:00 2001 From: Sung Won Cho Date: Tue, 5 Jan 2021 21:32:35 +1100 Subject: [PATCH] Simplify error handling --- pkg/server/controllers/helpers.go | 4 +++- pkg/server/controllers/users.go | 19 +++++++------------ pkg/server/main.go | 4 ++-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/pkg/server/controllers/helpers.go b/pkg/server/controllers/helpers.go index 40ee2b8b..4f9e4bbd 100644 --- a/pkg/server/controllers/helpers.go +++ b/pkg/server/controllers/helpers.go @@ -201,10 +201,12 @@ func getStatusCode(err error) int { } // handleHTMLError writes the error to the log and sets the error message in the data. -func handleHTMLError(w http.ResponseWriter, err error, msg string, d *views.Data) { +func handleHTMLError(w http.ResponseWriter, r *http.Request, err error, msg string, v *views.View, d *views.Data) { statusCode := getStatusCode(err) w.WriteHeader(statusCode) logError(err, msg) d.SetAlert(err) + + v.Render(w, r, d) } diff --git a/pkg/server/controllers/users.go b/pkg/server/controllers/users.go index fe768c28..cf158a35 100644 --- a/pkg/server/controllers/users.go +++ b/pkg/server/controllers/users.go @@ -5,7 +5,6 @@ import ( "github.com/dnote/dnote/pkg/server/app" "github.com/dnote/dnote/pkg/server/config" - "github.com/dnote/dnote/pkg/server/log" "github.com/dnote/dnote/pkg/server/views" ) @@ -48,26 +47,23 @@ type LoginForm struct { } func (u *Users) Login(w http.ResponseWriter, r *http.Request) { + vd := views.Data{} + var form LoginForm if err := parseRequestData(r, &form); err != nil { - log.Error(err.Error()) - w.WriteHeader(500) + handleHTMLError(w, r, err, "parsing request data", u.LoginView, &vd) return } - vd := views.Data{} - user, err := u.app.Authenticate(form.Email, form.Password) if err != nil { - handleHTMLError(w, err, "authenticating user", &vd) - u.LoginView.Render(w, r, vd) + handleHTMLError(w, r, err, "authenticating user", u.LoginView, &vd) return } session, err := u.app.SignIn(user) if err != nil { - handleHTMLError(w, err, "signing in a user", &vd) - u.LoginView.Render(w, r, vd) + handleHTMLError(w, r, err, "signing in a user", u.LoginView, &vd) return } @@ -80,14 +76,13 @@ func (u *Users) Logout(w http.ResponseWriter, r *http.Request) { key, err := GetCredential(r) if err != nil { - handleHTMLError(w, err, "signing in a user", &vd) + handleHTMLError(w, r, err, "getting credentials", u.LoginView, &vd) u.LoginView.Render(w, r, vd) return } if err = u.app.DeleteSession(key); err != nil { - handleHTMLError(w, err, "signing in a user", &vd) - u.LoginView.Render(w, r, vd) + handleHTMLError(w, r, err, "deleting session", u.LoginView, &vd) return } diff --git a/pkg/server/main.go b/pkg/server/main.go index d26f8283..6f6e49ed 100644 --- a/pkg/server/main.go +++ b/pkg/server/main.go @@ -101,7 +101,7 @@ func startCmd() { r := routes.New(&app, rc) - log.Printf("dnote version %s is running on port %s", versionTag, *port) + log.Printf("Dnote version %s is running on port %s", versionTag, *port) log.Fatalln(http.ListenAndServe(fmt.Sprintf(":%s", cfg.Port), r)) } @@ -110,7 +110,7 @@ func versionCmd() { } func rootCmd() { - fmt.Printf(`dnote server - a simple personal knowledge base + fmt.Printf(`Dnote server - a simple personal knowledge base Usage: dnote-server [command]