rate-current CLI option (#847)

This commit is contained in:
Drew Weymouth
2026-02-07 10:18:51 -08:00
committed by GitHub
parent 3c46889014
commit b52aa5b36f
5 changed files with 54 additions and 3 deletions
+18 -2
View File
@@ -43,13 +43,14 @@ type ServerManager interface {
type serverImpl struct {
server *http.Server
pbHandler PlaybackHandler
rateFn func(int)
sm ServerManager
showFn func()
quitFn func()
}
func NewServer(pbHandler PlaybackHandler, sm ServerManager, showFn, quitFn func()) IPCServer {
s := &serverImpl{pbHandler: pbHandler, sm: sm, showFn: showFn, quitFn: quitFn}
func NewServer(pbHandler PlaybackHandler, rateFn func(int), sm ServerManager, showFn, quitFn func()) IPCServer {
s := &serverImpl{pbHandler: pbHandler, rateFn: rateFn, sm: sm, showFn: showFn, quitFn: quitFn}
s.server = &http.Server{
Handler: s.createHandler(),
}
@@ -172,6 +173,21 @@ func (s *serverImpl) createHandler() http.Handler {
return tracks, nil
}))
m.HandleFunc(RateCurrentTrackPath, func(w http.ResponseWriter, r *http.Request) {
v := r.URL.Query().Get("r")
if rating, err := strconv.Atoi(v); err == nil {
// convert to 0-5 range if needed
if rating > 5 {
rating = 5
} else if rating < 0 {
rating = 0
}
s.rateFn(rating)
s.writeOK(w)
} else {
s.writeErr(w, err)
}
})
return m
}