From fbde8963db89b9f9c54341e7d04200b316bef6a8 Mon Sep 17 00:00:00 2001 From: mkwcat Date: Fri, 5 Jan 2024 19:00:09 -0500 Subject: [PATCH] API: Allow more advanced group filtering --- api/groups.go | 3 +-- api/stats.go | 2 +- qr2/group.go | 8 ++++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/api/groups.go b/api/groups.go index 81414b0..62cd1dc 100644 --- a/api/groups.go +++ b/api/groups.go @@ -24,8 +24,7 @@ func HandleGroups(w http.ResponseWriter, r *http.Request) { return } - gameName := query.Get("game") - groups := qr2.GetGroups(gameName) + groups := qr2.GetGroups(query["game"], query["id"]) for _, group := range groups { for i, player := range group.Players { diff --git a/api/stats.go b/api/stats.go index 6a392a8..47d9208 100644 --- a/api/stats.go +++ b/api/stats.go @@ -35,7 +35,7 @@ func HandleStats(w http.ResponseWriter, r *http.Request) { stats := map[string]Stats{} servers := qr2.GetSessionServers() - groups := qr2.GetGroups("") + groups := qr2.GetGroups([]string{}, []string{}) globalStats := Stats{ OnlinePlayerCount: len(servers), diff --git a/qr2/group.go b/qr2/group.go index 6894e96..1719392 100644 --- a/qr2/group.go +++ b/qr2/group.go @@ -238,14 +238,18 @@ type GroupInfo struct { } // GetGroups returns an unsorted copy of all online rooms -func GetGroups(gameName string) []GroupInfo { +func GetGroups(gameNames []string, groupNames []string) []GroupInfo { var groupsCopy []GroupInfo mutex.Lock() defer mutex.Unlock() for _, group := range groups { - if gameName != "" && gameName != group.GameName { + if len(gameNames) > 0 && !common.StringInSlice(group.GameName, gameNames) { + continue + } + + if len(groupNames) > 0 && !common.StringInSlice(group.GroupName, groupNames) { continue }