Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,85 @@
|
||||
package websocket
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
participanthandler "legatus-rme/backend/participantHandler"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
"github.com/go-playground/validator/v10"
|
||||
)
|
||||
|
||||
func (s *Server) participantHandler(w http.ResponseWriter, r *http.Request) {
|
||||
c, err := s.Upgrader.Upgrade(w, r, nil)
|
||||
if err != nil {
|
||||
log.Println("Websocket Server - Error upgrading connection:", err)
|
||||
return
|
||||
}
|
||||
defer c.Close()
|
||||
|
||||
for {
|
||||
var req ParticipantHandlerWebsocketRequestWithoutData
|
||||
if err := c.ReadJSON(&req); err != nil {
|
||||
c.WriteJSON(&ErrorWebsocketResponse{
|
||||
Error: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if req.Type != "getAllParticipants" {
|
||||
req2 := ParticipantHandlerWebsocketRequest(req)
|
||||
err = validator.New().Struct(req2)
|
||||
if err != nil {
|
||||
c.WriteJSON(&ErrorWebsocketResponse{
|
||||
Error: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = validator.New().Struct(req)
|
||||
if err != nil {
|
||||
c.WriteJSON(&ErrorWebsocketResponse{
|
||||
Error: err.Error(),
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
participantHandlerByExcersiseId participanthandler.ParticipantHandler
|
||||
ok bool
|
||||
)
|
||||
if participantHandlerByExcersiseId, ok = s.ParticipantHandlers[req.ExcerciseId]; !ok {
|
||||
participantHandlerByExcersiseId = OpenWebsocket("participantHandler", []int{s.ExerciseServicePortMap[fmt.Sprintf("%d-ParticipantManagement1", req.ExcerciseId)], req.ExcerciseId * 102}).(participanthandler.ParticipantHandler)
|
||||
}
|
||||
|
||||
switch req.Type {
|
||||
case "checkIfParticipantIsValid":
|
||||
participantData := participantHandlerByExcersiseId.CheckIfParticipantIsValid(req.ParticipantData.ParticipantId)
|
||||
c.WriteJSON(&participantData)
|
||||
continue
|
||||
case "getAllParticipants":
|
||||
participantData := participantHandlerByExcersiseId.GetAllParticipants()
|
||||
c.WriteJSON(&participantData)
|
||||
continue
|
||||
case "changeAbcProtection":
|
||||
if err := participantHandlerByExcersiseId.ChangeAbcProtection(req.ParticipantData.ParticipantId, req.ParticipantData.AbcProtection); err != nil {
|
||||
c.WriteJSON(&ErrorWebsocketResponse{
|
||||
Error: err.Error(),
|
||||
})
|
||||
}
|
||||
c.WriteJSON(req.ParticipantData)
|
||||
continue
|
||||
case "changePosition":
|
||||
if err := participantHandlerByExcersiseId.ChangePosition(req.ParticipantData.ParticipantId, &participanthandler.GeoPosition{
|
||||
Lat: req.ParticipantData.Positions[0].Lat,
|
||||
Lng: req.ParticipantData.Positions[0].Lng,
|
||||
}); err != nil {
|
||||
c.WriteJSON(&ErrorWebsocketResponse{
|
||||
Error: err.Error(),
|
||||
})
|
||||
}
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user