mirror of
https://github.com/status-im/status-go.git
synced 2026-08-30 00:21:11 +00:00
* refactor: internal/nodecfg * refactor: split constants package * refactor: move internal/errors * chore: node types to messaging * refactor: merge eth-node ens into protocol ens * refactor: internal/centralizedmetrics * refactor: internal/healthmanager
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package errors
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
// ErrorCode represents a specific error code.
|
|
type ErrorCode string
|
|
|
|
const GenericErrorCode ErrorCode = "0"
|
|
|
|
// ErrorResponse represents an error response structure.
|
|
type ErrorResponse struct {
|
|
Code ErrorCode `json:"code"`
|
|
Details string `json:"details,omitempty"`
|
|
}
|
|
|
|
// Error implements the error interface for ErrorResponse.
|
|
func (e *ErrorResponse) Error() string {
|
|
errorJSON, _ := json.Marshal(e)
|
|
return string(errorJSON)
|
|
}
|
|
|
|
// ErrorCodeFromError returns the ErrorCode from an error.
|
|
func ErrorCodeFromError(err error) ErrorCode {
|
|
if err == nil {
|
|
return GenericErrorCode
|
|
}
|
|
if errResp, ok := err.(*ErrorResponse); ok {
|
|
return errResp.Code
|
|
}
|
|
return GenericErrorCode
|
|
}
|
|
|
|
// DetailsFromError returns the details from an error.
|
|
func DetailsFromError(err error) string {
|
|
if err == nil {
|
|
return ""
|
|
}
|
|
if errResp, ok := err.(*ErrorResponse); ok {
|
|
return errResp.Details
|
|
}
|
|
return err.Error()
|
|
}
|
|
|
|
// CreateErrorResponseFromError creates an ErrorResponse from a generic error.
|
|
func CreateErrorResponseFromError(err error) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
if errResp, ok := err.(*ErrorResponse); ok {
|
|
return errResp
|
|
}
|
|
return &ErrorResponse{
|
|
Code: GenericErrorCode,
|
|
Details: err.Error(),
|
|
}
|
|
}
|