versia-go/internal/handlers/user_handler/handler.go
2024-08-28 01:10:38 +02:00

52 lines
1.5 KiB
Go

package user_handler
import (
"github.com/go-logr/logr"
"github.com/gofiber/fiber/v2"
"github.com/versia-pub/versia-go/internal/service"
"github.com/versia-pub/versia-go/internal/validators"
)
type Handler struct {
federationService service.FederationService
requestSigner service.RequestSigner
userService service.UserService
inboxService service.InboxService
bodyValidator validators.BodyValidator
requestValidator validators.RequestValidator
log logr.Logger
}
func New(federationService service.FederationService, requestSigner service.RequestSigner, userService service.UserService, inboxService service.InboxService, bodyValidator validators.BodyValidator, requestValidator validators.RequestValidator, log logr.Logger) *Handler {
return &Handler{
federationService: federationService,
requestSigner: requestSigner,
userService: userService,
inboxService: inboxService,
bodyValidator: bodyValidator,
requestValidator: requestValidator,
log: log,
}
}
func (i *Handler) Register(r fiber.Router) {
// TODO: Handle this differently
// There might be other routes that might want to also add their stuff to the robots.txt
r.Get("/robots.txt", i.RobotsTXT)
r.Get("/.well-known/webfinger", i.Webfinger)
r.Get("/api/app/users/search", i.SearchUser)
r.Get("/api/app/users/:id", i.GetUser)
r.Post("/api/app/users/", i.CreateUser)
r.Get("/api/users/:id", i.GetVersiaUser)
r.Post("/api/users/:id/inbox", i.HandleVersiaInbox)
}