2018-10-05 21:48:36 +00:00
|
|
|
package authority
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
)
|
|
|
|
|
2019-07-29 18:56:14 +00:00
|
|
|
type apiCtx map[string]interface{}
|
2018-10-05 21:48:36 +00:00
|
|
|
|
|
|
|
// Error implements the api.Error interface and adds context to error messages.
|
|
|
|
type apiError struct {
|
|
|
|
err error
|
|
|
|
code int
|
2019-07-29 18:56:14 +00:00
|
|
|
context apiCtx
|
2018-10-05 21:48:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Cause implements the errors.Causer interface and returns the original error.
|
|
|
|
func (e *apiError) Cause() error {
|
|
|
|
return e.err
|
|
|
|
}
|
|
|
|
|
|
|
|
// Error returns an error message with additional context.
|
|
|
|
func (e *apiError) Error() string {
|
|
|
|
ret := e.err.Error()
|
|
|
|
|
|
|
|
/*
|
|
|
|
if len(e.context) > 0 {
|
|
|
|
ret += "\n\nContext:"
|
|
|
|
for k, v := range e.context {
|
|
|
|
ret += fmt.Sprintf("\n %s: %v", k, v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
return ret
|
|
|
|
}
|
|
|
|
|
|
|
|
// StatusCode returns an http status code indicating the type and severity of
|
|
|
|
// the error.
|
|
|
|
func (e *apiError) StatusCode() int {
|
|
|
|
if e.code == 0 {
|
|
|
|
return http.StatusInternalServerError
|
|
|
|
}
|
|
|
|
return e.code
|
|
|
|
}
|