diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-05-31 18:14:25 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-05-31 18:14:25 +0200 |
| commit | 0a8e25ea698333c73c50fc84e3334e1079606a10 (patch) | |
| tree | cbb29a6c23de33214e67b951a75f1c554ba2fcef /main.go | |
| parent | 1f89f1d22ced0bb107514efb7e861247c2941a70 (diff) | |
| download | WRMS-0a8e25ea698333c73c50fc84e3334e1079606a10.tar.gz WRMS-0a8e25ea698333c73c50fc84e3334e1079606a10.zip | |
allow admins to skip or delete songs
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 37 |
1 files changed, 34 insertions, 3 deletions
@@ -151,18 +151,47 @@ func addHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Added song %s", string(data)) } -func playPauseHandler(w http.ResponseWriter, r *http.Request) { +func deleteHandler(w http.ResponseWriter, r *http.Request) { connId, err := getConnId(w, r) if err != nil { return } if !wrms.Config.IsAdmin(connId) { - http.Error(w, "Only admin is allowed to control Playback", http.StatusUnauthorized) + http.Error(w, "Only admins are allowed to delete songs", http.StatusUnauthorized) + return + } + + songUri := r.URL.Query().Get("song") + llog.Info("Delete song %s via url %s", songUri, r.URL) + wrms.DeleteSong(songUri) +} + +func genericControlHandler(w http.ResponseWriter, r *http.Request, cmd string) { + connId, err := getConnId(w, r) + if err != nil { return } - wrms.PlayPause() + if !wrms.Config.IsAdmin(connId) { + http.Error(w, "Only admins are allowed to control playback", http.StatusUnauthorized) + return + } + + switch cmd { + case "playpause": + wrms.PlayPause() + case "next": + wrms.Next() + } +} + +func playPauseHandler(w http.ResponseWriter, r *http.Request) { + genericControlHandler(w, r, "playpause") +} + +func nextHandler(w http.ResponseWriter, r *http.Request) { + genericControlHandler(w, r, "next") } func wsEndpoint(w http.ResponseWriter, r *http.Request) { @@ -275,6 +304,8 @@ func setupRoutes() { http.HandleFunc("/down", downHandler) http.HandleFunc("/unvote", unvoteHandler) http.HandleFunc("/add", addHandler) + http.HandleFunc("/delete", deleteHandler) + http.HandleFunc("/next", nextHandler) http.HandleFunc("/playpause", playPauseHandler) http.HandleFunc("/ws", wsEndpoint) } |
