package errorutil import ( "errors" "net/http" "github.com/go-chi/render" ) var ( ErrBotNotFound = errors.New("bot not found") ErrBotAlreadyExists = errors.New("this bot has already been submitted") ErrSearchFailed = errors.New("no bots found fitting this filter") ErrInvalidID = errors.New("invalid discord id") ErrMainOwnerAsCoOwner = errors.New("you cannot set yourself as a co-owner") ) type ErrResponse struct { Err error `json:"-"` HTTPStatusCode int `json:"-"` StatusText string `json:"status"` ErrorText string `json:"error,omitempty"` } func (e *ErrResponse) Render(w http.ResponseWriter, r *http.Request) error { render.Status(r, e.HTTPStatusCode) return nil } func ErrInvalidRequest(err error) render.Renderer { return &ErrResponse{ Err: err, HTTPStatusCode: 400, StatusText: "invalid request", ErrorText: errString(err), } } func ErrInternal(err error) render.Renderer { return &ErrResponse{ Err: err, HTTPStatusCode: 500, StatusText: "internal server error", ErrorText: errString(err), } } var ErrNotFound = &ErrResponse{ HTTPStatusCode: 404, StatusText: "resource not found", } var ErrUnauthorized = &ErrResponse{ HTTPStatusCode: 401, StatusText: "unauthorized", } var ErrForbidden = &ErrResponse{ HTTPStatusCode: 403, StatusText: "forbidden", } func errString(err error) string { if err == nil { return "" } return err.Error() }