| package errors |
| |
| import "net/http" |
| |
| // apiError is an error wrapper that also |
| // holds information about response status codes. |
| type apiError struct { |
| error |
| statusCode int |
| } |
| |
| // HTTPErrorStatusCode returns a status code. |
| func (e apiError) HTTPErrorStatusCode() int { |
| return e.statusCode |
| } |
| |
| // NewErrorWithStatusCode allows you to associate |
| // a specific HTTP Status Code to an error. |
| // The Server will take that code and set |
| // it as the response status. |
| func NewErrorWithStatusCode(err error, code int) error { |
| return apiError{err, code} |
| } |
| |
| // NewBadRequestError creates a new API error |
| // that has the 400 HTTP status code associated to it. |
| func NewBadRequestError(err error) error { |
| return NewErrorWithStatusCode(err, http.StatusBadRequest) |
| } |
| |
| // NewRequestForbiddenError creates a new API error |
| // that has the 403 HTTP status code associated to it. |
| func NewRequestForbiddenError(err error) error { |
| return NewErrorWithStatusCode(err, http.StatusForbidden) |
| } |
| |
| // NewRequestNotFoundError creates a new API error |
| // that has the 404 HTTP status code associated to it. |
| func NewRequestNotFoundError(err error) error { |
| return NewErrorWithStatusCode(err, http.StatusNotFound) |
| } |
| |
| // NewRequestConflictError creates a new API error |
| // that has the 409 HTTP status code associated to it. |
| func NewRequestConflictError(err error) error { |
| return NewErrorWithStatusCode(err, http.StatusConflict) |
| } |