refactor!: working WD-4 user discovery

This commit is contained in:
DevMiner 2024-08-20 22:43:26 +02:00
parent cf0053312d
commit 61891d891a
91 changed files with 12768 additions and 5562 deletions

View file

@ -4,17 +4,22 @@ import (
"github.com/go-logr/logr"
"github.com/gofiber/fiber/v2"
"github.com/lysand-org/versia-go/config"
"github.com/lysand-org/versia-go/internal/service"
"github.com/lysand-org/versia-go/pkg/webfinger"
)
type Handler struct {
instanceMetadataService service.InstanceMetadataService
hostMeta webfinger.HostMeta
log logr.Logger
}
func New(log logr.Logger) *Handler {
func New(instanceMetadataService service.InstanceMetadataService, log logr.Logger) *Handler {
return &Handler{
instanceMetadataService: instanceMetadataService,
hostMeta: webfinger.NewHostMeta(config.C.PublicAddress),
log: log.WithName("users"),
@ -22,7 +27,11 @@ func New(log logr.Logger) *Handler {
}
func (i *Handler) Register(r fiber.Router) {
r.Get("/.well-known/lysand", i.GetLysandServerMetadata)
r.Get("/.well-known/versia", i.GetLysandInstanceMetadata)
r.Get("/.well-known/versia/admins", i.GetLysandInstanceMetadata)
r.Get("/.well-known/versia/moderators", i.GetLysandInstanceMetadata)
// Webfinger host meta spec
r.Get("/.well-known/host-meta", i.GetHostMeta)
r.Get("/.well-known/host-meta.json", i.GetHostMetaJSON)
}

View file

@ -0,0 +1,14 @@
package meta_handler
import (
"github.com/gofiber/fiber/v2"
)
func (i *Handler) GetLysandInstanceMetadata(c *fiber.Ctx) error {
m, err := i.instanceMetadataService.Ours(c.UserContext())
if err != nil {
return err
}
return c.JSON(m.ToLysand())
}

View file

@ -1,28 +0,0 @@
package meta_handler
import (
"github.com/Masterminds/semver"
"github.com/gofiber/fiber/v2"
"github.com/lysand-org/versia-go/config"
"github.com/lysand-org/versia-go/pkg/lysand"
)
func (i *Handler) GetLysandServerMetadata(c *fiber.Ctx) error {
return c.JSON(lysand.ServerMetadata{
// TODO: Get version from build linker flags
Version: semver.MustParse("0.0.0-dev"),
Name: config.C.InstanceName,
Description: config.C.InstanceDescription,
Website: lysand.URLFromStd(config.C.PublicAddress),
// TODO: Get more info
Moderators: nil,
Admins: nil,
Logo: nil,
Banner: nil,
SupportedExtensions: []string{},
Extensions: map[string]any{},
})
}