diff --git a/packages/httpRequest/hubs.go b/packages/httpRequest/hubs.go index 6f638ca..4c0d9dd 100644 --- a/packages/httpRequest/hubs.go +++ b/packages/httpRequest/hubs.go @@ -274,7 +274,7 @@ func HandleGetChannels(response http.ResponseWriter, request *http.Request) { return } ctx := request.Context() - user, hubUser, hub, err := getHubUserIfValidWithResponseOnFail(ctx, response, request) + _, _, hub, err := getHubUserIfValidWithResponseOnFail(ctx, response, request) if err != nil { return } @@ -286,6 +286,51 @@ func HandleGetChannels(response http.ResponseWriter, request *http.Request) { } channelMap[uint8(i)] = channel } + hub.Mu.Unlock() + if len(channelMap) == 0 { + response.WriteHeader(http.StatusNoContent) + return + } + + channels, err := json.Marshal(channelMap) + if err != nil { + http.Error(response, "json error", http.StatusInternalServerError) + return + } + response.WriteHeader(http.StatusOK) + response.Write(channels) +} + +func HandleGetHubUsers(response http.ResponseWriter, request *http.Request) { + if !validCheckWithResponseOnFail(response, request, normal) { + return + } + ctx := request.Context() + _, requestor, hub, err := getHubUserIfValidWithResponseOnFail(ctx, response, request) + if { + return + } + users := make([]*types.HubUser, 0) + hub.Mu.RLock() + for userId, user := range hub.Users { + if userId == requestor.OriginalId { + continue + } + users = append(users, user) + } + hub.Mu.Unlock() + if len(users) == 0 { + response.WriteHeader(http.StatusNoContent) + return + } + + channels, err := json.Marshal(users) + if err != nil { + http.Error(response, "json error", http.StatusInternalServerError) + return + } + response.WriteHeader(http.StatusOK) + response.Write(channels) } func hubPermissionContext(response http.ResponseWriter, request *http.Request, rt bodyLimit, needed types.Permissions) (*types.HubUser, *types.Hub, context.Context, uint8, bool) {