go-urlsh/internal/app/fiber.go

80 lines
2 KiB
Go
Raw Normal View History

package app
import (
2023-04-25 18:43:01 +02:00
"codeberg.org/lauralani/go-urlsh/internal/api"
2023-04-27 10:37:42 +02:00
"codeberg.org/lauralani/go-urlsh/internal/web"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/compress"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/etag"
"github.com/gofiber/fiber/v2/middleware/logger"
"github.com/gofiber/fiber/v2/middleware/recover"
2023-04-27 12:34:24 +02:00
"github.com/gofiber/template/html"
"os"
)
func SetupFiber() error {
var prod = false
var port = "3000"
var ip = ""
var proxyheader = "X-Forwarded-For"
2023-04-27 12:34:24 +02:00
var template_engine = html.New("./views", ".tmpl")
if os.Getenv("PROD") == "true" {
prod = true
}
if os.Getenv("PORT") != "" {
port = os.Getenv("PORT")
}
if os.Getenv("LISTEN") != "" {
ip = os.Getenv("LISTEN")
}
if os.Getenv("PROXYHEADER") != "" {
proxyheader = os.Getenv("PROXYHEADER")
}
fiberapp := fiber.New(fiber.Config{
AppName: "go-urlsh",
ProxyHeader: proxyheader,
Prefork: prod,
ErrorHandler: HandleError,
2023-04-27 12:34:24 +02:00
Views: template_engine,
})
fiberapp.Use(logger.New(logger.Config{Format: "[${ip}]:${port} ${status} ${method} ${path}\n"}))
fiberapp.Use(etag.New(etag.Config{Weak: false}))
fiberapp.Use(compress.New())
fiberapp.Use(recover.New())
2023-04-27 12:34:24 +02:00
fiberapp.Get("/admin/", web.HandleAdminRootGet)
fiberapp.Get("/admin/login", web.HandleAdminLoginGet)
fiberapp.Post("/admin/login", web.HandleAdminLoginPost)
2023-04-27 12:34:24 +02:00
fiberapp.Static("/admin/", "./web")
2023-04-27 10:37:42 +02:00
v1 := fiberapp.Group("/api/v1")
v1.Use(cors.New(cors.Config{AllowOrigins: "*"}))
2023-04-25 18:43:01 +02:00
v1.Get("/links", api.HandleLinkGetAll)
v1.Get("/links/:id", api.HandleLinkGet)
v1.Put("/links/:id", api.HandleLinkPut)
v1.Post("/links", api.HandleLinkPost)
v1.Delete("/links/:id", api.HandleLinkDelete)
v1.Get("/apikeys", api.HandleApiKeysGetAll)
v1.Post("/apikeys", api.HandleApiKeysPost)
v1.Delete("/apikeys/:id<guid>", api.HandleApiKeysPost)
2023-04-27 10:37:42 +02:00
v1.Post("/users", api.HandleUserPost)
listenerr := fiberapp.Listen(ip + ":" + port)
if listenerr != nil {
return listenerr
}
return nil
}