From bce1e567a379de2adcb0674baed527402c0bf839 Mon Sep 17 00:00:00 2001 From: Zaptoss <zaptosgg@gmail.com> Date: Fri, 27 Sep 2024 15:42:43 +0300 Subject: [PATCH] Add error handling --- .../handlers/create_abstraction_account.go | 6 +++++ .../handlers/get_abstraction_account.go | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/internal/service/handlers/create_abstraction_account.go b/internal/service/handlers/create_abstraction_account.go index 06d01af..48b78c0 100644 --- a/internal/service/handlers/create_abstraction_account.go +++ b/internal/service/handlers/create_abstraction_account.go @@ -3,6 +3,7 @@ package handlers import ( "bytes" "errors" + "fmt" "math/big" "net/http" @@ -75,6 +76,11 @@ func CreateAbstractionAccount(w http.ResponseWriter, r *http.Request) { addr, err = Abstraction(r).CreateAccount(r.Context(), nullifierBytes) if err != nil { + errData := ErrorData(err) + if errData != nil { + log = log.WithField("data", fmt.Sprintf("%+v", errData)) + } + log.WithError(err).Error("Failed to create abstraction account") ape.RenderErr(w, problems.InternalError()) return diff --git a/internal/service/handlers/get_abstraction_account.go b/internal/service/handlers/get_abstraction_account.go index 531f630..540cd45 100644 --- a/internal/service/handlers/get_abstraction_account.go +++ b/internal/service/handlers/get_abstraction_account.go @@ -2,6 +2,7 @@ package handlers import ( "bytes" + "errors" "net/http" "strings" @@ -55,3 +56,27 @@ func GetAbstractionAccount(w http.ResponseWriter, r *http.Request) { }, }) } + +type EthJsonRpcErrorI interface { + Error() string + ErrorCode() int + ErrorData() interface{} +} + +func ErrorData(err error) interface{} { + for err != nil { + uerr := errors.Unwrap(err) + if uerr == nil { + break + } + + err = uerr + } + var cerr EthJsonRpcErrorI + ok := errors.As(err, &cerr) + if ok { + return cerr.ErrorData() + } + + return nil +}