add cmdline flags and some fixes to the IPC layer

This commit is contained in:
Drew Weymouth
2024-06-12 17:21:15 -07:00
parent 8e815c644a
commit 280030c858
8 changed files with 187 additions and 93 deletions
+9 -13
View File
@@ -5,6 +5,7 @@ import (
"encoding/json"
"net"
"net/http"
"strconv"
)
type PlaybackHandler interface {
@@ -71,25 +72,20 @@ func (s *serverImpl) createHandler() http.Handler {
m.HandleFunc(PreviousPath, s.makeSimpleEndpointHandler(s.pbHandler.SeekBackOrPrevious))
m.HandleFunc(NextPath, s.makeSimpleEndpointHandler(s.pbHandler.SeekNext))
m.HandleFunc(TimePosPath, func(w http.ResponseWriter, r *http.Request) {
var t TimePos
if err := json.NewDecoder(r.Response.Body).Decode(&t); err != nil {
_s := r.URL.Query().Get("s")
if secs, err := strconv.ParseFloat(_s, 64); err == nil {
s.writeSimpleResponse(w, s.pbHandler.SeekSeconds(secs))
} else {
s.writeErr(w, err)
return
}
s.writeSimpleResponse(w, s.pbHandler.SeekSeconds(t.Seconds))
})
m.HandleFunc(VolumePath, func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
msg, _ := json.Marshal(Volume{Volume: s.pbHandler.Volume()})
w.Write(msg)
return
}
var v Volume
if err := json.NewDecoder(r.Response.Body).Decode(&v); err != nil {
v := r.URL.Query().Get("v")
if vol, err := strconv.Atoi(v); err == nil {
s.writeSimpleResponse(w, s.pbHandler.SetVolume(vol))
} else {
s.writeErr(w, err)
return
}
s.writeSimpleResponse(w, s.pbHandler.SetVolume(v.Volume))
})
return m
}