wfc-server/api/mkw_rr.go
2026-03-28 15:16:05 +01:00

61 lines
1.2 KiB
Go

package api
import (
"encoding/json"
"net/http"
"net/url"
"strconv"
"wwfc/qr2"
)
type RaceResultInfo struct {
Players map[uint32]qr2.PlayerInfo `json:"players"`
Results map[int][]qr2.RaceResult `json:"results"`
}
func HandleMKWRR(w http.ResponseWriter, r *http.Request) {
u, err := url.Parse(r.URL.String())
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
query, err := url.ParseQuery(u.RawQuery)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
groupNames := query["id"]
if len(groupNames) != 1 {
w.WriteHeader(http.StatusBadRequest)
return
}
groupName := query["id"][0]
players := qr2.GetRacePlayersForGroup(groupName)
results := qr2.GetRaceResultsForGroup(groupName)
if results == nil {
w.WriteHeader(http.StatusNotFound)
return
}
if players == nil {
players = map[uint32]qr2.PlayerInfo{}
}
var jsonData []byte
jsonData, err = json.Marshal(RaceResultInfo{
Players: players,
Results: results,
})
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Content-Length", strconv.Itoa(len(jsonData)))
w.Write(jsonData)
}