chore: Upgrade to Fiber v3

This commit is contained in:
2026-02-21 01:50:59 +03:00
parent 73316d4e62
commit 92568ad4e2
3 changed files with 53 additions and 125 deletions
+18 -21
View File
@@ -9,12 +9,12 @@ import (
"strings"
"time"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/gofiber/fiber/v2/middleware/favicon"
"github.com/gofiber/fiber/v2/middleware/filesystem"
"github.com/gofiber/fiber/v2/middleware/logger"
recover "github.com/gofiber/fiber/v2/middleware/recover"
"github.com/gofiber/fiber/v3"
"github.com/gofiber/fiber/v3/middleware/cors"
"github.com/gofiber/fiber/v3/middleware/favicon"
"github.com/gofiber/fiber/v3/middleware/logger"
recover "github.com/gofiber/fiber/v3/middleware/recover"
"github.com/gofiber/fiber/v3/middleware/static"
"prayertimes/pkg/prayer"
"prayertimes/templates"
@@ -36,11 +36,10 @@ type DiyanetProvider interface {
func New(services Services) *fiber.App {
app := fiber.New(fiber.Config{
Immutable: true,
DisableStartupMessage: false,
ReadTimeout: time.Second * 10,
WriteTimeout: time.Second * 30,
ErrorHandler: func(ctx *fiber.Ctx, err error) error {
Immutable: true,
ReadTimeout: time.Second * 10,
WriteTimeout: time.Second * 30,
ErrorHandler: func(ctx fiber.Ctx, err error) error {
if errors.Is(err, prayer.ErrInvalidLocation) {
return ctx.Status(http.StatusUnprocessableEntity).JSON(httpError{
Message: err.Error(),
@@ -58,17 +57,17 @@ func New(services Services) *fiber.App {
cors.New(),
)
app.Get("/healthz", func(ctx *fiber.Ctx) error {
app.Get("/healthz", func(ctx fiber.Ctx) error {
return ctx.SendString("OK")
})
app.Get("/api/v1/diyanet/prayertimes", func(ctx *fiber.Ctx) error {
app.Get("/api/v1/diyanet/prayertimes", func(ctx fiber.Ctx) error {
var query struct {
LocationID string `query:"location_id"`
Latitude string `query:"latitude"`
Longitude string `query:"longitude"`
}
if err := ctx.QueryParser(&query); err != nil {
if err := ctx.Bind().Query(&query); err != nil {
return fmt.Errorf("failed to bind prayer times query parameters: %w", errors.Join(fiber.ErrBadRequest, err))
}
@@ -106,17 +105,17 @@ func New(services Services) *fiber.App {
return fmt.Errorf("failed to fetch prayer times: %w", err)
}
ctx.Response().Header.Add(fiber.HeaderCacheControl, "max-age=86400")
ctx.Response().Header.Set(fiber.HeaderCacheControl, "max-age=86400")
return ctx.JSON(fiber.Map{
"prayertimes": times,
})
})
app.Get("/api/v1/diyanet/location", func(ctx *fiber.Ctx) error {
app.Get("/api/v1/diyanet/location", func(ctx fiber.Ctx) error {
var query struct {
Text string `query:"query"`
}
if err := ctx.QueryParser(&query); err != nil {
if err := ctx.Bind().Query(&query); err != nil {
return fmt.Errorf("failed to bind location query parameters: %w", errors.Join(fiber.ErrBadRequest, err))
}
@@ -130,15 +129,13 @@ func New(services Services) *fiber.App {
return fmt.Errorf("failed to search locations: %w", err)
}
ctx.Response().Header.Add(fiber.HeaderCacheControl, "max-age=86400")
ctx.Response().Header.Set(fiber.HeaderCacheControl, "max-age=86400")
return ctx.JSON(fiber.Map{
"locations": locations,
})
})
app.Use("/", filesystem.New(filesystem.Config{
Root: templates.HttpFS(),
}))
app.Use("/", static.New("", static.Config{FS: templates.FS()}))
return app
}