add window actions to ipc

This commit is contained in:
Drew Weymouth
2024-06-10 07:59:06 -07:00
parent d6cac62704
commit 969c30f35a
2 changed files with 34 additions and 14 deletions
+6
View File
@@ -3,6 +3,7 @@ package ipc
const ( const (
// GET // GET
PingPath = "/ping" PingPath = "/ping"
// POST // POST
PlayPath = "/transport/play" PlayPath = "/transport/play"
// POST // POST
@@ -22,6 +23,11 @@ const (
// GET -> Volume // GET -> Volume
// POST(Volume) // POST(Volume)
VolumePath = "/volume" VolumePath = "/volume"
// POST
ShowPath = "/window/show"
// POST
QuitPath = "/window/quit"
) )
type TimePos struct { type TimePos struct {
+28 -14
View File
@@ -5,7 +5,7 @@ import (
"net/http" "net/http"
) )
type Handler interface { type PlaybackHandler interface {
PlayPause() error PlayPause() error
Stop() error Stop() error
Pause() error Pause() error
@@ -17,12 +17,18 @@ type Handler interface {
SetVolume(int) error SetVolume(int) error
} }
type serverImpl struct { type WindowHandler interface {
handler Handler Show()
Quit()
} }
func NewServer(handler Handler) *http.Server { type serverImpl struct {
s := serverImpl{handler: handler} pbHandler PlaybackHandler
wdHandler WindowHandler
}
func NewServer(pbHandler PlaybackHandler, wdHandler WindowHandler) *http.Server {
s := serverImpl{pbHandler: pbHandler, wdHandler: wdHandler}
return &http.Server{ return &http.Server{
Handler: s.createHandler(), Handler: s.createHandler(),
} }
@@ -35,23 +41,31 @@ func (s *serverImpl) createHandler() http.Handler {
w.Write([]byte("The given path is not valid")) w.Write([]byte("The given path is not valid"))
}) })
m.HandleFunc(PingPath, s.makeSimpleEndpointHandler(func() error { return nil })) m.HandleFunc(PingPath, s.makeSimpleEndpointHandler(func() error { return nil }))
m.HandleFunc(PlayPath, s.makeSimpleEndpointHandler(s.handler.Continue)) m.HandleFunc(ShowPath, s.makeSimpleEndpointHandler(func() error {
m.HandleFunc(PausePath, s.makeSimpleEndpointHandler(s.handler.Pause)) s.wdHandler.Show()
m.HandleFunc(PlayPausePath, s.makeSimpleEndpointHandler(s.handler.PlayPause)) return nil
m.HandleFunc(StopPath, s.makeSimpleEndpointHandler(s.handler.Stop)) }))
m.HandleFunc(PreviousPath, s.makeSimpleEndpointHandler(s.handler.SeekBackOrPrevious)) m.HandleFunc(QuitPath, s.makeSimpleEndpointHandler(func() error {
m.HandleFunc(NextPath, s.makeSimpleEndpointHandler(s.handler.SeekNext)) go s.wdHandler.Quit()
return nil
}))
m.HandleFunc(PlayPath, s.makeSimpleEndpointHandler(s.pbHandler.Continue))
m.HandleFunc(PausePath, s.makeSimpleEndpointHandler(s.pbHandler.Pause))
m.HandleFunc(PlayPausePath, s.makeSimpleEndpointHandler(s.pbHandler.PlayPause))
m.HandleFunc(StopPath, s.makeSimpleEndpointHandler(s.pbHandler.Stop))
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) { m.HandleFunc(TimePosPath, func(w http.ResponseWriter, r *http.Request) {
var t TimePos var t TimePos
if err := json.NewDecoder(r.Response.Body).Decode(&t); err != nil { if err := json.NewDecoder(r.Response.Body).Decode(&t); err != nil {
s.writeErr(w, err) s.writeErr(w, err)
return return
} }
s.writeSimpleResponse(w, s.handler.SeekSeconds(t.Seconds)) s.writeSimpleResponse(w, s.pbHandler.SeekSeconds(t.Seconds))
}) })
m.HandleFunc(VolumePath, func(w http.ResponseWriter, r *http.Request) { m.HandleFunc(VolumePath, func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet { if r.Method == http.MethodGet {
msg, _ := json.Marshal(Volume{Volume: s.handler.Volume()}) msg, _ := json.Marshal(Volume{Volume: s.pbHandler.Volume()})
w.Write(msg) w.Write(msg)
return return
} }
@@ -60,7 +74,7 @@ func (s *serverImpl) createHandler() http.Handler {
s.writeErr(w, err) s.writeErr(w, err)
return return
} }
s.writeSimpleResponse(w, s.handler.SetVolume(v.Volume)) s.writeSimpleResponse(w, s.pbHandler.SetVolume(v.Volume))
}) })
return m return m
} }