updated hws.ThrowError to not return an error and log it to console instead
fixed errors_test fixed tests
This commit is contained in:
@@ -9,7 +9,7 @@ import (
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// Error to use with Server.ThrowError
|
||||
// HWSError wraps an error with other information for use with HWS features
|
||||
type HWSError struct {
|
||||
StatusCode int // HTTP Status code
|
||||
Message string // Error message
|
||||
@@ -41,7 +41,7 @@ type ErrorPage interface {
|
||||
}
|
||||
|
||||
// AddErrorPage registers a handler that returns an ErrorPage
|
||||
func (server *Server) AddErrorPage(pageFunc ErrorPageFunc) error {
|
||||
func (s *Server) AddErrorPage(pageFunc ErrorPageFunc) error {
|
||||
rr := httptest.NewRecorder()
|
||||
req := httptest.NewRequest("GET", "/", nil)
|
||||
page, err := pageFunc(HWSError{StatusCode: http.StatusInternalServerError})
|
||||
@@ -56,7 +56,7 @@ func (server *Server) AddErrorPage(pageFunc ErrorPageFunc) error {
|
||||
return errors.New("Render method of the error page did not write anything to the response writer")
|
||||
}
|
||||
|
||||
server.errorPage = pageFunc
|
||||
s.errorPage = pageFunc
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -64,7 +64,19 @@ func (server *Server) AddErrorPage(pageFunc ErrorPageFunc) error {
|
||||
// the error with the level specified by the HWSError.
|
||||
// If HWSError.RenderErrorPage is true, the error page will be rendered to the ResponseWriter
|
||||
// and the request chain should be terminated.
|
||||
func (server *Server) ThrowError(w http.ResponseWriter, r *http.Request, error HWSError) error {
|
||||
func (s *Server) ThrowError(w http.ResponseWriter, r *http.Request, error HWSError) {
|
||||
err := s.throwError(w, r, error)
|
||||
if err != nil {
|
||||
s.LogError(error)
|
||||
s.LogError(HWSError{
|
||||
Message: "Error occured during throwError",
|
||||
Error: errors.Wrap(err, "s.throwError"),
|
||||
Level: ErrorERROR,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) throwError(w http.ResponseWriter, r *http.Request, error HWSError) error {
|
||||
if error.StatusCode <= 0 {
|
||||
return errors.New("HWSError.StatusCode cannot be 0.")
|
||||
}
|
||||
@@ -77,32 +89,27 @@ func (server *Server) ThrowError(w http.ResponseWriter, r *http.Request, error H
|
||||
if r == nil {
|
||||
return errors.New("Request cannot be nil")
|
||||
}
|
||||
if !server.IsReady() {
|
||||
if !s.IsReady() {
|
||||
return errors.New("ThrowError called before server started")
|
||||
}
|
||||
w.WriteHeader(error.StatusCode)
|
||||
server.LogError(error)
|
||||
if server.errorPage == nil {
|
||||
server.LogError(HWSError{Message: "No error page provided", Error: nil, Level: ErrorDEBUG})
|
||||
s.LogError(error)
|
||||
if s.errorPage == nil {
|
||||
s.LogError(HWSError{Message: "No error page provided", Error: nil, Level: ErrorDEBUG})
|
||||
return nil
|
||||
}
|
||||
if error.RenderErrorPage {
|
||||
server.LogError(HWSError{Message: "Error page rendering", Error: nil, Level: ErrorDEBUG})
|
||||
errPage, err := server.errorPage(error)
|
||||
s.LogError(HWSError{Message: "Error page rendering", Error: nil, Level: ErrorDEBUG})
|
||||
errPage, err := s.errorPage(error)
|
||||
if err != nil {
|
||||
server.LogError(HWSError{Message: "Failed to get a valid error page", Error: err})
|
||||
s.LogError(HWSError{Message: "Failed to get a valid error page", Error: err})
|
||||
}
|
||||
err = errPage.Render(r.Context(), w)
|
||||
if err != nil {
|
||||
server.LogError(HWSError{Message: "Failed to render error page", Error: err})
|
||||
s.LogError(HWSError{Message: "Failed to render error page", Error: err})
|
||||
}
|
||||
} else {
|
||||
server.LogError(HWSError{Message: "Error page specified not to render", Error: nil, Level: ErrorDEBUG})
|
||||
s.LogError(HWSError{Message: "Error page specified not to render", Error: nil, Level: ErrorDEBUG})
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (server *Server) ThrowFatal(w http.ResponseWriter, err error) {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
server.LogFatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user