package server
import (
"strings"
"github.com/gofiber/fiber/v2"
"github.com/limanmys/render-engine/pkg/helpers"
"github.com/limanmys/render-engine/pkg/logger"
"go.uber.org/zap"
)
var ErrorHandler = func (c *fiber .Ctx , err error ) error {
code := fiber .StatusInternalServerError
if e , ok := err .(*fiber .Error ); ok {
code = e .Code
}
var message *fiber .Map
if code == fiber .StatusOK {
message = &fiber .Map {
"status" : code ,
"message" : err .Error(),
}
} else {
if code >= fiber .StatusInternalServerError {
request := helpers .GetFormData (c )
for k := range request {
if strings .Contains (strings .ToLower (k ), "password" ) || strings .Contains (strings .ToLower (k ), "token" ) {
request [k ] = ""
}
}
logger .Sugar ().WithOptions (zap .WithCaller (false )).Errorw (
"recover middleware catch" ,
"status" , code ,
"message" , err .Error(),
"request_details" , request ,
)
}
message = &fiber .Map {
"status" : code ,
"message" : err .Error(),
}
}
return c .Status (201 ).JSON (message )
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .