package hws import "net/http" type HWSError struct { statusCode int // HTTP Status code message string // Error message error error // Error } type ErrorPage func(statusCode int, w http.ResponseWriter, r *http.Request) error func NewError(statusCode int, msg string, err error) *HWSError { return &HWSError{ statusCode: statusCode, message: msg, error: err, } } func (server *Server) AddErrorPage(page ErrorPage) { server.errorPage = page } func (server *Server) ThrowError(w http.ResponseWriter, r *http.Request, error *HWSError) { w.WriteHeader(error.statusCode) server.logger.logger.Error().Err(error.error).Msg(error.message) if server.errorPage != nil { err := server.errorPage(error.statusCode, w, r) if err != nil { server.logger.logger.Error().Err(err).Msg("Failed to render error page") } } } func (server *Server) ThrowWarn(w http.ResponseWriter, error *HWSError) { w.WriteHeader(error.statusCode) server.logger.logger.Warn().Err(error.error).Msg(error.message) }