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 + `"`) }