116 lines
3 KiB
Go
116 lines
3 KiB
Go
package testing
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
|
|
"git.sapphic.engineer/roleypoly/v4/auth/authmiddleware"
|
|
"git.sapphic.engineer/roleypoly/v4/discord"
|
|
"git.sapphic.engineer/roleypoly/v4/templates/components"
|
|
"git.sapphic.engineer/roleypoly/v4/types"
|
|
"git.sapphic.engineer/roleypoly/v4/types/fixtures"
|
|
)
|
|
|
|
type TestingController struct {
|
|
Guilds *discord.GuildService
|
|
}
|
|
|
|
func (t *TestingController) Routes(r fiber.Router) {
|
|
r.Get("/picker/:version?", t.Picker)
|
|
r.Get("/index", t.Index)
|
|
r.Get("/t/:which", t.TestTemplate)
|
|
r.Get("/m/:server/:user", t.GetMember)
|
|
r.Get("/g/:server", t.GetGuild)
|
|
r.Get("/auth", t.AuthState, authmiddleware.New(t.Guilds.Client(), []string{}, []string{}))
|
|
}
|
|
|
|
func (t *TestingController) Index(c fiber.Ctx) error {
|
|
return c.Render("index", fiber.Map{})
|
|
}
|
|
|
|
func (t *TestingController) Picker(c fiber.Ctx) error {
|
|
version := c.Params("version", "main")
|
|
|
|
allRoles := []*types.Role{
|
|
&fixtures.RoleWithDarkColor,
|
|
&fixtures.RoleWithDarkMediumColor,
|
|
&fixtures.RoleWithLightMediumColor,
|
|
&fixtures.RoleWithLightColor,
|
|
}
|
|
|
|
badRoles := []*types.Role{
|
|
&fixtures.RoleUnsafe,
|
|
&fixtures.RoleUnsafePicked,
|
|
}
|
|
|
|
return c.Render("picker/"+version, fiber.Map{
|
|
"Categories": []components.CategoryTemplateData{
|
|
components.Category(fixtures.Category(fixtures.CategoryMulti, "multiple"), allRoles),
|
|
components.Category(fixtures.Category(fixtures.CategorySingle, "single"), allRoles),
|
|
components.Category(fixtures.Category(fixtures.CategoryMulti, "multi w/ unsafe"), badRoles),
|
|
components.Category(fixtures.Category(fixtures.CategorySingle, "single w/ unsafe"), badRoles),
|
|
},
|
|
})
|
|
}
|
|
|
|
func (t *TestingController) TestTemplate(c fiber.Ctx) error {
|
|
which := c.Params("which")
|
|
|
|
return c.Render("tests/"+which, fiber.Map{}, "layouts/main")
|
|
}
|
|
|
|
func (t *TestingController) GetMember(c fiber.Ctx) error {
|
|
serverID := c.Params("server")
|
|
userID := c.Params("user")
|
|
|
|
g, err := t.Guilds.GetGuild(serverID)
|
|
if err != nil {
|
|
log.Println("testing/get guild: ", err)
|
|
types.NewAPIError(500, err.Error()).Send(c)
|
|
}
|
|
|
|
m, err := g.GetMember(userID)
|
|
if err != nil {
|
|
log.Println("testing/get member: ", err)
|
|
types.NewAPIError(500, err.Error()).Send(c)
|
|
}
|
|
|
|
return c.JSON(m.DiscordMember)
|
|
}
|
|
|
|
func (t *TestingController) GetGuild(c fiber.Ctx) error {
|
|
serverID := c.Params("server")
|
|
|
|
g, err := t.Guilds.GetGuild(serverID)
|
|
if err != nil {
|
|
log.Println("testing/get guild: ", err)
|
|
types.NewAPIError(500, err.Error()).Send(c)
|
|
}
|
|
|
|
return c.JSON(g.DiscordGuild)
|
|
}
|
|
|
|
func (t *TestingController) AuthState(c fiber.Ctx) error {
|
|
s := authmiddleware.SessionFrom(c)
|
|
|
|
permList := []string{}
|
|
|
|
if s.Permissions >= authmiddleware.PermAnonymous {
|
|
permList = append(permList, "anonymous")
|
|
}
|
|
|
|
if s.Permissions >= authmiddleware.PermUser {
|
|
permList = append(permList, "user")
|
|
}
|
|
|
|
if s.Permissions >= authmiddleware.PermSupport {
|
|
permList = append(permList, "support")
|
|
}
|
|
|
|
if s.Permissions >= authmiddleware.PermSuperuser {
|
|
permList = append(permList, "superuser")
|
|
}
|
|
|
|
return c.JSON(permList)
|
|
}
|