52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
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
|
|
}
|