From a8684a6aade6bac962da35a96e14667cca3c44c5 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Sun, 11 Jun 2017 23:02:49 -0400 Subject: use defer to manage errors --- web.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/web.go b/web.go index 43d3c9f..5e17b61 100644 --- a/web.go +++ b/web.go @@ -54,33 +54,31 @@ func (app *App) root(w http.ResponseWriter, r *http.Request) { } func (app *App) callback(w http.ResponseWriter, r *http.Request) { - redir := func(err error) { - if err != nil { + defer func() { + if rec := recover(); rec != nil { http.Redirect(w, r, "/login", http.StatusFound) - log.Panic(err) + log.Println(rec) } - } + }() var state string app.GetCookie(r, "state", &state) if state == "" || state != r.FormValue("state") { - redir(fmt.Errorf("state")) + panic(fmt.Errorf("state")) } code := r.FormValue("code") - tok, err := app.Config.OAuth.Exchange(context.Background(), code) - redir(err) + tok, _ := app.Config.OAuth.Exchange(context.Background(), code) client := app.Config.OAuth.Client(context.Background(), tok) resp, _ := client.Get("https://www.googleapis.com/plus/v1/people/me/openIdConnect") p, _ := ioutil.ReadAll(resp.Body) userinfo := new(UserInfo) - err = json.Unmarshal(p, userinfo) - redir(err) + json.Unmarshal(p, userinfo) se := new(UserSession) se.Id = hex.EncodeToString(genKey(32)) row := app.DB.QueryRow("SELECT user_id, name FROM users WHERE type='google' AND op_id=$1", userinfo.Sub) - err = row.Scan(&se.UserId, &se.UserName) + err := row.Scan(&se.UserId, &se.UserName) if err != nil { row := app.DB.QueryRow("INSERT into users (type, op_id, name, email)"+ "values ('google', $1, $2, $3) RETURNING user_id", -- cgit v1.2.3-70-g09d2