aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-05-31 18:14:25 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2023-05-31 18:14:25 +0200
commit0a8e25ea698333c73c50fc84e3334e1079606a10 (patch)
treecbb29a6c23de33214e67b951a75f1c554ba2fcef /main.go
parent1f89f1d22ced0bb107514efb7e861247c2941a70 (diff)
downloadWRMS-0a8e25ea698333c73c50fc84e3334e1079606a10.tar.gz
WRMS-0a8e25ea698333c73c50fc84e3334e1079606a10.zip
allow admins to skip or delete songs
Diffstat (limited to 'main.go')
-rw-r--r--main.go37
1 files changed, 34 insertions, 3 deletions
diff --git a/main.go b/main.go
index 2899eb1..55a789a 100644
--- a/main.go
+++ b/main.go
@@ -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)
}