add window actions to ipc
This commit is contained in:
@@ -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
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user