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
+}