all repos — homestead @ b16c1c7338333ad5f9c968f7fa579015d350672a

Code for my website

extract HTTP logic to shared module

Alan Pearce
commit

b16c1c7338333ad5f9c968f7fa579015d350672a

parent

1ac299018401dc48caeb862b4dcc117a7a65e091

1 file changed, 67 insertions(+), 0 deletions(-)

changed files
A shared/http/error.go
@@ -0,0 +1,67 @@
+package http + +import ( + "fmt" + "net/http" +) + +type Error struct { + Code int + Message string + Cause error +} + +func (e *Error) Error() string { + if e.Message == "" { + e.Message = http.StatusText(e.Code) + } + + return fmt.Sprintf("%d %s", e.Code, e.Message) +} + +func NewError(code int, message string, cause error) *Error { + return &Error{ + Code: code, + Message: message, + Cause: cause, + } +} + +func NotFound(message string) *Error { + return &Error{ + Code: http.StatusNotFound, + Message: message, + } +} + +func BadRequest(message string, cause error) *Error { + return &Error{ + Code: http.StatusBadRequest, + Message: message, + Cause: cause, + } +} + +func InternalServerError(message string, cause error) *Error { + return &Error{ + Code: http.StatusInternalServerError, + Message: message, + Cause: cause, + } +} + +func Unauthorized(message string, cause error) *Error { + return &Error{ + Code: http.StatusUnauthorized, + Message: message, + Cause: cause, + } +} + +func Forbidden(message string, cause error) *Error { + return &Error{ + Code: http.StatusForbidden, + Message: message, + Cause: cause, + } +}