dashboard/app/http/endpoints/api/blacklist.go
2020-05-11 18:49:07 +01:00

57 lines
1.1 KiB
Go

package api
import (
"context"
"fmt"
"github.com/TicketsBot/GoPanel/database"
"github.com/TicketsBot/GoPanel/rpc/cache"
"github.com/gin-gonic/gin"
"golang.org/x/sync/errgroup"
"strconv"
"sync"
)
type userData struct {
Username string `json:"username"`
Discriminator string `json:"discriminator"`
}
func GetBlacklistHandler(ctx *gin.Context) {
guildId := ctx.Keys["guildid"].(uint64)
blacklistedUsers, err := database.Client.Blacklist.GetBlacklistedUsers(guildId)
if err != nil {
ctx.JSON(500, gin.H{
"success": false,
"error": err.Error(),
})
return
}
data := make(map[string]userData)
var lock sync.Mutex
group, _ := errgroup.WithContext(context.Background())
for _, userId := range blacklistedUsers {
group.Go(func() error {
user, _ := cache.Instance.GetUser(userId)
lock.Lock()
// JS cant do big ints
data[strconv.FormatUint(userId, 10)] = userData{
Username: user.Username,
Discriminator: fmt.Sprintf("%04d", user.Discriminator),
}
lock.Unlock()
return nil
})
}
_ = group.Wait()
ctx.JSON(200, data)
}