package app import ( "codeberg.org/danjones000/lenore/config" vocab "github.com/go-ap/activitypub" "github.com/go-ap/processing" "github.com/gofiber/adaptor/v2" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/logger" "net/http" ) func New() *fiber.App { app := fiber.New() conf := config.GetConfig() app.Use(func(c *fiber.Ctx) error { c.Set("X-Clacks-Overhead", "GNU Terry Pratchett, Robin Williams") c.Next() return nil }) app.Use(logger.New(logger.Config{ Format: "${time} | ${status} | ${latency} | ${method} | ${path} | ${body}\n", TimeFormat: "2006-01-02T15:04:05", })) app.Use(cors.New(cors.Config{MaxAge: 3600})) app.Get("/", func(c *fiber.Ctx) error { return c.JSON(&conf) }) var meHandle processing.ItemHandlerFn meHandle = func(r *http.Request) (vocab.Item, error) { return conf.GetActor(), nil } app.Get("/me", adaptor.HTTPHandler(meHandle)) app.Post("/check_pass", func(c *fiber.Ctx) error { req := new(struct { Pass string `json:"pass"` }) if err := c.BodyParser(req); err != nil { panic(err) } return c.JSON(config.CheckPassword(req.Pass)) }) return app }