diff options
author | Bas van Kervel <bas@ethdev.com> | 2015-06-24 20:56:53 +0800 |
---|---|---|
committer | Bas van Kervel <bas@ethdev.com> | 2015-06-24 20:56:53 +0800 |
commit | dc58568a25e54ea601aefb8e97f427cae0814612 (patch) | |
tree | f1d2cad2817364537c833bd5a333dd322de677d4 /rpc/api/eth_args.go | |
parent | f1a4a6e563ea72affe365d89513e5c83a35e4c28 (diff) | |
download | dexon-dc58568a25e54ea601aefb8e97f427cae0814612.tar dexon-dc58568a25e54ea601aefb8e97f427cae0814612.tar.gz dexon-dc58568a25e54ea601aefb8e97f427cae0814612.tar.bz2 dexon-dc58568a25e54ea601aefb8e97f427cae0814612.tar.lz dexon-dc58568a25e54ea601aefb8e97f427cae0814612.tar.xz dexon-dc58568a25e54ea601aefb8e97f427cae0814612.tar.zst dexon-dc58568a25e54ea601aefb8e97f427cae0814612.zip |
added eth.resend
Diffstat (limited to 'rpc/api/eth_args.go')
-rw-r--r-- | rpc/api/eth_args.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/rpc/api/eth_args.go b/rpc/api/eth_args.go index 39c003f66..a75fdbdee 100644 --- a/rpc/api/eth_args.go +++ b/rpc/api/eth_args.go @@ -892,3 +892,53 @@ func newTx(t *types.Transaction) *tx { GasPrice: t.GasPrice().String(), } } + +type ResendArgs struct { + Tx *tx + GasPrice string + GasLimit string +} + +func (args *ResendArgs) UnmarshalJSON(b []byte) (err error) { + var obj []interface{} + if err = json.Unmarshal(b, &obj); err != nil { + return shared.NewDecodeParamError(err.Error()) + } + + if len(obj) < 1 { + return shared.NewInsufficientParamsError(len(obj), 1) + } + + data, err := json.Marshal(obj[0]) + if err != nil { + return shared.NewDecodeParamError("Unable to parse transaction object") + } + + trans := new(tx) + err = json.Unmarshal(data, trans) + if err != nil { + return shared.NewDecodeParamError("Unable to parse transaction object.") + } + + gasLimit, gasPrice := trans.GasLimit, trans.GasPrice + + if len(obj) > 1 && obj[1] != nil { + if gp, ok := obj[1].(string); ok { + gasPrice = gp + } else { + return shared.NewInvalidTypeError("gasPrice", "not a string") + } + } + if len(obj) > 2 && obj[2] != nil { + if gl, ok := obj[2].(string); ok { + gasLimit = gl + } else { + return shared.NewInvalidTypeError("gasLimit", "not a string") + } + } + args.Tx = trans + args.GasPrice = gasPrice + args.GasLimit = gasLimit + + return nil +} |