diff options
| -rw-r--r-- | modern.go | 33 | ||||
| -rw-r--r-- | web.go | 12 |
2 files changed, 30 insertions, 15 deletions
@@ -7,6 +7,7 @@ import ( "encoding/xml" "errors" "fmt" + "log" "net/http" "strings" "time" @@ -17,6 +18,7 @@ type Api interface { AuthGetSession(*http.Request) (ApiResponse, error) AuthGetMobileSession(*http.Request) (ApiResponse, error) TrackScrobble(*http.Request) (ApiResponse, error) + UpdateNowPlaying(*http.Request) (ApiResponse, error) } type ApiResponse interface { @@ -149,13 +151,25 @@ func (store *SqlStore) AuthGetSession(r *http.Request) (ApiResponse, error) { func (store *SqlStore) TrackScrobble(r *http.Request) (ApiResponse, error) { if session, err := store.GetSession(r.FormValue("sk")); err != nil { - fmt.Printf("%v\n", err) return nil, err } else { scrobbles, ignored := parseScrobbles(r.Form, session) - store.PutScrobbles(scrobbles) - return Scrobbles{Scrobbles: scrobbles, - Attrs: Attrs{len(scrobbles), ignored}}, nil + if err := store.PutScrobbles(scrobbles); err != nil { + return nil, err + } else { + return Scrobbles{Scrobbles: scrobbles, + Attrs: Attrs{len(scrobbles), ignored}}, nil + } + } +} + +func (store *SqlStore) UpdateNowPlaying(r *http.Request) (ApiResponse, error) { + if session, err := store.GetSession(r.FormValue("sk")); err != nil { + return nil, err + } else { + fmt.Println("TODO") + fmt.Printf("%v", session) + return nil, nil } } @@ -166,18 +180,17 @@ func (app *App) ApiHandler(w http.ResponseWriter, r *http.Request) { switch strings.ToLower(method) { case "auth.gettoken": response, err = app.AuthGetToken(r) - if err != nil { - fmt.Printf("%v\n", err) - } case "auth.getsession": response, err = app.AuthGetSession(r) case "auth.getmobilesession": response, err = app.AuthGetMobileSession(r) case "track.scrobble": response, err = app.TrackScrobble(r) - if err != nil { - fmt.Printf("%v\n", err) - } + case "update.nowplaying": + response, err = app.UpdateNowPlaying(r) + } + if err != nil { + log.Println("%v", err) } var text []byte switch r.FormValue("format") { @@ -76,7 +76,7 @@ func (app *App) callback(w http.ResponseWriter, r *http.Request) { var state string app.GetCookie(r, "state", &state) if state == "" || state != r.FormValue("state") { - panic(fmt.Errorf("state")) + panic(fmt.Errorf("Inconsistent states: %v %v", state, r.FormValue("state"))) } code := r.FormValue("code") tok, _ := app.Config.OAuth.Exchange(r.Context(), code) @@ -86,16 +86,17 @@ func (app *App) callback(w http.ResponseWriter, r *http.Request) { user := &User{Type: "google"} json.Unmarshal(p, user) - s := &UserSession{Id: hex.EncodeToString(genKey(32))} - var newUser bool + newUser := false if err := app.GetUser(user); err != nil { newUser = true if err := app.InsertUser(user); err != nil { panic(err) } } - s.UserId = user.Id - s.UserName = user.Name + + s := &UserSession{Id: hex.EncodeToString(genKey(32)), + UserId: user.Id, + UserName: user.Name} app.InsertUserSession(s) app.SetCookie(w, "session", s, 86400*30) @@ -112,6 +113,7 @@ func (app *App) callback(w http.ResponseWriter, r *http.Request) { } else if newUser { http.Redirect(w, r, "/settings", http.StatusTemporaryRedirect) } else { + log.Println("Existing user without lfmauth cookie") http.Redirect(w, r, "/", http.StatusFound) } } |
