104 lines
2.6 KiB
Go
104 lines
2.6 KiB
Go
package server
|
|
|
|
import (
|
|
d "playback-device-server/data"
|
|
m "playback-device-server/management"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
type RemoteApiHandler struct {
|
|
router *echo.Echo
|
|
remoteManager *m.RemoteManager
|
|
}
|
|
|
|
func (r *RemoteApiHandler) Initialize(authenticator *Authenticator) {
|
|
r.router.Use(authenticator.Authenticate("/api/remotes", []string{}))
|
|
remotesApi := r.router.Group("/api/remotes")
|
|
remotesApi.GET("", r.handleGetRemotes)
|
|
remotesApi.POST("", r.handleCreateRemote)
|
|
remotesApi.DELETE("/:id", r.handleDelteRemote)
|
|
|
|
r.router.Use(authenticator.Authenticate("/api/commands", []string{}))
|
|
commandsApi := r.router.Group("/api/commands")
|
|
commandsApi.GET("", r.handleGetCommands)
|
|
commandsApi.POST("", r.handleCreateCommands)
|
|
commandsApi.DELETE("/:id", r.handleDeleteCommand)
|
|
|
|
}
|
|
|
|
func (r *RemoteApiHandler) handleCreateRemote(context echo.Context) error {
|
|
remote := d.Remote{}
|
|
if err := context.Bind(&remote); err != nil {
|
|
SendError(400, context, err.Error())
|
|
return nil
|
|
}
|
|
id, err := r.remoteManager.CreateRemote(remote)
|
|
if err != nil {
|
|
SendError(500, context, err.Error())
|
|
return err
|
|
}
|
|
remote.Id = id
|
|
return context.JSON(200, remote)
|
|
}
|
|
|
|
func (r *RemoteApiHandler) handleGetRemotes(context echo.Context) error {
|
|
remotes, err := r.remoteManager.GetRemotes()
|
|
if err != nil {
|
|
SendError(500, context, err.Error())
|
|
return err
|
|
}
|
|
return context.JSON(200, remotes)
|
|
}
|
|
|
|
func (r *RemoteApiHandler) handleDelteRemote(context echo.Context) error {
|
|
id := context.Param("id")
|
|
err := r.remoteManager.DeleteRemote(id)
|
|
if err != nil {
|
|
SendError(500, context, err.Error())
|
|
return err
|
|
}
|
|
return context.JSON(200, "")
|
|
}
|
|
|
|
func (r *RemoteApiHandler) handleCreateCommands(context echo.Context) error {
|
|
commands := []d.Command{}
|
|
if err := context.Bind(&commands); err != nil {
|
|
SendError(400, context, err.Error())
|
|
return nil
|
|
}
|
|
err := r.remoteManager.CreateCommands(commands)
|
|
if err != nil {
|
|
SendError(500, context, err.Error())
|
|
return err
|
|
}
|
|
return context.JSON(200, "")
|
|
}
|
|
|
|
func (r *RemoteApiHandler) handleGetCommands(context echo.Context) error {
|
|
commands, err := r.remoteManager.GetCommands()
|
|
if err != nil {
|
|
SendError(500, context, err.Error())
|
|
return err
|
|
}
|
|
return context.JSON(200, commands)
|
|
}
|
|
|
|
func (r *RemoteApiHandler) handleDeleteCommand(context echo.Context) error {
|
|
id := context.Param("id")
|
|
err := r.remoteManager.DeleteCommand(id)
|
|
if err != nil {
|
|
SendError(500, context, err.Error())
|
|
return err
|
|
}
|
|
return context.JSON(200, "")
|
|
}
|
|
|
|
func (r *RemoteApiHandler) SetRouter(router *echo.Echo) {
|
|
r.router = router
|
|
}
|
|
|
|
func (r *RemoteApiHandler) SetRemoteManager(remoteManager *m.RemoteManager) {
|
|
r.remoteManager = remoteManager
|
|
}
|