| 12345678910111213141516171819202122232425262728293031 |
- package errors
- import "net/http"
- // ToHTTP converts an error into an HTTP status code and a JSON-serializable body.
- //
- // The returned body matches the project's Status shape:
- // { code, reason, message, metadata }.
- func ToHTTP(err error) (statusCode int, body Status) {
- if err == nil {
- return http.StatusOK, Status{Code: int32(http.StatusOK)}
- }
- appErr := FromError(err)
- if appErr == nil {
- return http.StatusOK, Status{Code: int32(http.StatusOK)}
- }
- body = Status{
- Code: appErr.Code,
- Reason: appErr.Reason,
- Message: appErr.Message,
- }
- if appErr.Metadata != nil {
- body.Metadata = make(map[string]string, len(appErr.Metadata))
- for k, v := range appErr.Metadata {
- body.Metadata[k] = v
- }
- }
- return int(appErr.Code), body
- }
|