| package errors | |
| import ( | |
| "errors" | |
| "net/http" | |
| ) | |
| // HTTPError is an augmented error with a HTTP status code. | |
| type HTTPError struct { | |
| StatusCode int | |
| error | |
| } | |
| // Error implements the error interface. | |
| func (e *HTTPError) Error() string { | |
| return e.error.Error() | |
| } | |
| // NewMethodNotAllowed returns an appropriate error in the case that | |
| // an HTTP client uses an invalid method (i.e. a GET in place of a POST) | |
| // on an API endpoint. | |
| func NewMethodNotAllowed(method string) *HTTPError { | |
| return &HTTPError{http.StatusMethodNotAllowed, errors.New(`Method is not allowed:"` + method + `"`)} | |
| } | |
| // NewBadRequest creates a HttpError with the given error and error code 400. | |
| func NewBadRequest(err error) *HTTPError { | |
| return &HTTPError{http.StatusBadRequest, err} | |
| } | |
| // NewBadRequestString returns a HttpError with the supplied message | |
| // and error code 400. | |
| func NewBadRequestString(s string) *HTTPError { | |
| return NewBadRequest(errors.New(s)) | |
| } | |
| // NewBadRequestMissingParameter returns a 400 HttpError as a required | |
| // parameter is missing in the HTTP request. | |
| func NewBadRequestMissingParameter(s string) *HTTPError { | |
| return NewBadRequestString(`Missing parameter "` + s + `"`) | |
| } | |
| // NewBadRequestUnwantedParameter returns a 400 HttpError as a unnecessary | |
| // parameter is present in the HTTP request. | |
| func NewBadRequestUnwantedParameter(s string) *HTTPError { | |
| return NewBadRequestString(`Unwanted parameter "` + s + `"`) | |
| } |