good morning!!!!

Skip to content
Snippets Groups Projects
Commit f9264e87 authored by Bas van Kervel's avatar Bas van Kervel
Browse files

add json parsing method for resend transaction

parent a355777f
No related branches found
No related tags found
No related merge requests found
...@@ -12,7 +12,6 @@ import ( ...@@ -12,7 +12,6 @@ import (
"github.com/ethereum/go-ethereum/rpc/shared" "github.com/ethereum/go-ethereum/rpc/shared"
"github.com/ethereum/go-ethereum/xeth" "github.com/ethereum/go-ethereum/xeth"
"gopkg.in/fatih/set.v0" "gopkg.in/fatih/set.v0"
"fmt"
) )
const ( const (
......
...@@ -4,8 +4,8 @@ import ( ...@@ -4,8 +4,8 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"math/big" "math/big"
"strconv" "strconv"
"strings"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/state"
...@@ -899,6 +899,81 @@ type ResendArgs struct { ...@@ -899,6 +899,81 @@ type ResendArgs struct {
GasLimit string GasLimit string
} }
func (tx *tx) UnmarshalJSON(b []byte) (err error) {
var fields map[string]interface{}
if err := json.Unmarshal(b, &fields); err != nil {
return shared.NewDecodeParamError(err.Error())
}
trans := new(types.Transaction)
if val, found := fields["To"]; found {
if strVal, ok := val.(string); ok && len(strVal) > 0 {
tx.To = strVal
to := common.StringToAddress(strVal)
trans.Recipient = &to
}
}
if val, found := fields["From"]; found {
if strVal, ok := val.(string); ok {
tx.From = strVal
}
}
if val, found := fields["Nonce"]; found {
if strVal, ok := val.(string); ok {
tx.Nonce = strVal
if trans.AccountNonce, err = strconv.ParseUint(strVal, 10, 64); err != nil {
return shared.NewDecodeParamError(fmt.Sprintf("Unable to decode tx.Nonce - %v", err))
}
}
}
var parseOk bool
if val, found := fields["Value"]; found {
if strVal, ok := val.(string); ok {
tx.Value = strVal
if trans.Amount, parseOk = new(big.Int).SetString(strVal, 0); !parseOk {
return shared.NewDecodeParamError(fmt.Sprintf("Unable to decode tx.Amount - %v", err))
}
}
}
if val, found := fields["Data"]; found {
if strVal, ok := val.(string); ok {
tx.Data = strVal
if strings.HasPrefix(strVal, "0x") {
trans.Payload = common.Hex2Bytes(strVal[2:])
} else {
trans.Payload = common.Hex2Bytes(strVal)
}
}
}
if val, found := fields["GasLimit"]; found {
if strVal, ok := val.(string); ok {
tx.GasLimit = strVal
if trans.GasLimit, parseOk = new(big.Int).SetString(strVal, 0); !parseOk {
return shared.NewDecodeParamError(fmt.Sprintf("Unable to decode tx.GasLimit - %v", err))
}
}
}
if val, found := fields["GasPrice"]; found {
if strVal, ok := val.(string); ok {
tx.GasPrice = strVal
if trans.Price, parseOk = new(big.Int).SetString(strVal, 0); !parseOk {
return shared.NewDecodeParamError(fmt.Sprintf("Unable to decode tx.GasPrice - %v", err))
}
}
}
tx.tx = trans
return nil
}
func (args *ResendArgs) UnmarshalJSON(b []byte) (err error) { func (args *ResendArgs) UnmarshalJSON(b []byte) (err error) {
var obj []interface{} var obj []interface{}
if err = json.Unmarshal(b, &obj); err != nil { if err = json.Unmarshal(b, &obj); err != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment