41 lines
859 B
Go
41 lines
859 B
Go
package api
|
|
|
|
import "net/http"
|
|
|
|
type RequestError struct {
|
|
Err error
|
|
UserMessage *string
|
|
StatusCode int
|
|
}
|
|
|
|
func NewError(statusCode int, err error) *RequestError {
|
|
return &RequestError{
|
|
Err: err,
|
|
StatusCode: statusCode,
|
|
}
|
|
}
|
|
|
|
func NewInternalServerError(err error, message string) *RequestError {
|
|
return NewErrorWithMessage(http.StatusInternalServerError, err, message)
|
|
}
|
|
|
|
func NewDatabaseError(err error) *RequestError {
|
|
return NewInternalServerError(err, "Error interacting with database: please contact support")
|
|
}
|
|
|
|
func NewErrorWithMessage(statusCode int, err error, message string) *RequestError {
|
|
return &RequestError{
|
|
Err: err,
|
|
UserMessage: &message,
|
|
StatusCode: statusCode,
|
|
}
|
|
}
|
|
|
|
func (r *RequestError) Error() string {
|
|
if r.UserMessage != nil {
|
|
return *r.UserMessage
|
|
} else {
|
|
return r.Err.Error()
|
|
}
|
|
}
|