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 }