error-pages/internal/http/handlers/errorpage/handler.go

27 lines
861 B
Go
Raw Normal View History

2021-09-29 15:38:50 +00:00
package errorpage
import (
"github.com/tarampampam/error-pages/internal/config"
"github.com/tarampampam/error-pages/internal/http/core"
2021-09-29 15:38:50 +00:00
"github.com/valyala/fasthttp"
)
type templatePicker interface {
// Pick the template name for responding.
Pick() string
}
2021-09-29 15:38:50 +00:00
2021-10-06 17:38:00 +00:00
// NewHandler creates handler for error pages serving.
func NewHandler(cfg *config.Config, p templatePicker, showRequestDetails bool) fasthttp.RequestHandler {
2021-09-29 15:38:50 +00:00
return func(ctx *fasthttp.RequestCtx) {
core.SetClientFormat(ctx, core.PlainTextContentType) // default content type
2021-09-29 15:38:50 +00:00
if code, ok := ctx.UserValue("code").(string); ok {
core.RespondWithErrorPage(ctx, cfg, p, code, fasthttp.StatusOK, showRequestDetails)
} else { // will never occur
2021-10-06 17:38:00 +00:00
ctx.SetStatusCode(fasthttp.StatusInternalServerError)
_, _ = ctx.WriteString("cannot extract requested code from the request")
2021-09-29 15:38:50 +00:00
}
}
}