aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modern.go33
-rw-r--r--web.go12
2 files changed, 30 insertions, 15 deletions
diff --git a/modern.go b/modern.go
index 47b3a1d..019c2c3 100644
--- a/modern.go
+++ b/modern.go
@@ -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") {
diff --git a/web.go b/web.go
index ea9e5cd..5eebc37 100644
--- a/web.go
+++ b/web.go
@@ -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)
}
}