48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
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 + `"`)
|
|
}
|