Zippytal-Node/webrtcHttpMiddleware.go
2021-12-08 15:58:40 +01:00

67 lines
1.2 KiB
Go

package localserver
import (
"context"
"encoding/json"
"io"
"net/http"
)
type (
WebRTCHttpMiddleware struct {
//menuItem *systray.MenuItem
}
)
const (
CREATE_HOSTED_SQUAD = "create_hosted_squad"
)
// func NewWebRTCHttpMiddleware(menuItem *systray.MenuItem) (webRTCHttpMiddleware *WebRTCHttpMiddleware) {
// webRTCHttpMiddleware = &WebRTCHttpMiddleware{
// menuItem: menuItem,
// }
// return
// }
func (wm *WebRTCHttpMiddleware) Process(ctx context.Context, req *http.Request) (err error) {
done, errCh := make(chan struct{}), make(chan error)
go func() {
localServerReq, err := wm.unmarshallBody(req)
if err != nil {
errCh <- err
return
}
switch localServerReq.ReqType {
case CREATE_HOSTED_SQUAD:
default:
}
}()
select {
case <-done:
return
case err = <-errCh:
return
case <-ctx.Done():
err = ctx.Err()
return
}
}
func (wm *WebRTCHttpMiddleware) unmarshallBody(req *http.Request) (localServerReq *LocalServerRequest, err error) {
reqBody, err := req.GetBody()
if err != nil {
return
}
bs, err := io.ReadAll(reqBody)
if err != nil {
return
}
err = json.Unmarshal(bs, &localServerReq)
if err != nil {
return
}
return
}