42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
|
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)
|
||
|
}
|
||
|
|
||
|
// 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)
|
||
|
}
|