diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2017-06-11 23:02:49 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2017-06-11 23:02:49 -0400 |
| commit | a8684a6aade6bac962da35a96e14667cca3c44c5 (patch) | |
| tree | e5a38339b9a44a8588bb5b0f8d56d2df9c4e539a /web.go | |
| parent | 246ce98dc8a7a55c6a9dfb850afcc69c7c8ea4f8 (diff) | |
| download | lastfm-api-a8684a6aade6bac962da35a96e14667cca3c44c5.tar.gz | |
use defer to manage errors
Diffstat (limited to 'web.go')
| -rw-r--r-- | web.go | 18 |
1 files changed, 8 insertions, 10 deletions
@@ -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", |
