chore: Upgrade to Fiber v3
This commit is contained in:
+18
-21
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user