novum-portfolio/pkg/server/server.go

46 lines
1.1 KiB
Go
Raw Normal View History

2024-01-07 18:44:15 +00:00
// Package server is the part of the service that serves it.
package server
import (
"net/http"
"git.foobar.vip/benni347/novum-portfolio/pkg/sites"
2024-01-16 10:55:07 +00:00
"github.com/a-h/templ"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/adaptor"
2024-01-16 10:58:05 +00:00
"github.com/gofiber/fiber/v2/middleware/healthcheck"
2024-01-07 18:44:15 +00:00
)
var serverAddr string
const appName = "novum-portfolio-server"
// ErrorResponse is a struct for error responses
type ErrorResponse struct {
Error string `json:"error"`
Message string `json:"message"`
}
// NewServer creates the new server and sets up the listener
2024-01-16 10:55:07 +00:00
func NewServer(app *fiber.App) *fiber.App {
app.Get("/", func(c *fiber.Ctx) error {
2024-01-16 12:14:06 +00:00
return Render(c, sites.IndexComponent("test"))
2024-01-16 10:55:07 +00:00
})
2024-01-16 10:58:05 +00:00
app.Use(healthcheck.New())
2024-01-16 10:55:07 +00:00
app.Use(NotFoundMiddleware)
return app
}
func NotFoundMiddleware(c *fiber.Ctx) error {
2024-01-16 12:14:06 +00:00
return Render(c, sites.NotFound(), templ.WithStatus(http.StatusNotFound))
2024-01-16 10:55:07 +00:00
}
func Render(c *fiber.Ctx, component templ.Component, options ...func(*templ.ComponentHandler)) error {
componentHandler := templ.Handler(component)
for _, o := range options {
o(componentHandler)
}
return adaptor.HTTPHandler(componentHandler)(c)
2024-01-07 18:44:15 +00:00
}