| 
									
										
										
										
											2015-01-13 09:13:43 -06:00
										 |  |  | /* | 
					
						
							|  |  |  |   This file is part of go-ethereum | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   go-ethereum is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |   it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |   the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |   (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   go-ethereum is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |   but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |   GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |   along with go-ethereum.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2014-10-21 13:24:48 +02:00
										 |  |  | package rpc | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | import ( | 
					
						
							|  |  |  | 	"bytes" | 
					
						
							|  |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 	"errors" | 
					
						
							| 
									
										
										
										
											2015-01-29 12:01:51 +01:00
										 |  |  | 	"fmt" | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/xeth" | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | var ( | 
					
						
							|  |  |  | 	errArguments      = errors.New("Error: Insufficient arguments") | 
					
						
							|  |  |  | 	errNotImplemented = errors.New("Error: Method not implemented") | 
					
						
							|  |  |  | 	errUnknown        = errors.New("Error: Unknown error") | 
					
						
							|  |  |  | 	errDecodeArgs     = errors.New("Error: Could not decode arguments") | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-03 17:29:29 -06:00
										 |  |  | type RpcRequest struct { | 
					
						
							| 
									
										
										
										
											2015-02-11 11:56:29 +01:00
										 |  |  | 	ID      interface{}       `json:"id"` | 
					
						
							| 
									
										
										
										
											2015-02-03 17:29:29 -06:00
										 |  |  | 	JsonRpc string            `json:"jsonrpc"` | 
					
						
							|  |  |  | 	Method  string            `json:"method"` | 
					
						
							|  |  |  | 	Params  []json.RawMessage `json:"params"` | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type RpcSuccessResponse struct { | 
					
						
							| 
									
										
										
										
											2015-02-11 11:56:29 +01:00
										 |  |  | 	ID      interface{} `json:"id"` | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	JsonRpc string      `json:"jsonrpc"` | 
					
						
							|  |  |  | 	Result  interface{} `json:"result"` | 
					
						
							| 
									
										
										
										
											2014-10-21 13:24:48 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | type RpcErrorResponse struct { | 
					
						
							| 
									
										
										
										
											2015-02-11 11:56:29 +01:00
										 |  |  | 	ID      interface{}     `json:"id"` | 
					
						
							| 
									
										
										
										
											2015-02-03 17:29:29 -06:00
										 |  |  | 	JsonRpc string          `json:"jsonrpc"` | 
					
						
							|  |  |  | 	Error   *RpcErrorObject `json:"error"` | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-03 17:29:29 -06:00
										 |  |  | type RpcErrorObject struct { | 
					
						
							|  |  |  | 	Code    int    `json:"code"` | 
					
						
							|  |  |  | 	Message string `json:"message"` | 
					
						
							|  |  |  | 	// Data    interface{} `json:"data"` | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | func NewErrorWithMessage(err error, msg string) error { | 
					
						
							|  |  |  | 	return fmt.Errorf("%s: %s", err.Error(), msg) | 
					
						
							| 
									
										
										
										
											2015-01-29 12:01:51 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 00:24:00 +01:00
										 |  |  | func (req *RpcRequest) ToSha3Args() (*Sha3Args, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-29 00:24:00 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(Sha3Args) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	if err := json.NewDecoder(r).Decode(args); err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-29 00:24:00 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 00:24:00 +01:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | func (req *RpcRequest) ToGetBlockArgs() (*GetBlockArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(GetBlockArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToNewTxArgs() (*NewTxArgs, error) { | 
					
						
							| 
									
										
										
										
											2015-01-29 12:01:51 +01:00
										 |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(NewTxArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToPushTxArgs() (*PushTxArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(PushTxArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	args := new(GetStateArgs) | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	// TODO need to pass both arguments | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | func (req *RpcRequest) ToStorageAtArgs() (*GetStorageArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(GetStorageArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | func (req *RpcRequest) ToGetTxCountArgs() (*GetTxCountArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(GetTxCountArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToGetBalanceArgs() (*GetBalanceArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(GetBalanceArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-12 23:25:29 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-13 09:27:36 -06:00
										 |  |  | func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-13 09:27:36 -06:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(GetCodeAtArgs) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-13 09:27:36 -06:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-13 09:27:36 -06:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-19 18:58:15 +01:00
										 |  |  | func (req *RpcRequest) ToBoolArgs() (bool, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return false, errArguments | 
					
						
							| 
									
										
										
										
											2015-02-19 18:58:15 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args bool | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return false, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-02-19 18:58:15 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-25 09:57:49 +01:00
										 |  |  | func (req *RpcRequest) ToIntArgs() (int, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							|  |  |  | 		return 0, errArguments | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args int | 
					
						
							|  |  |  | 	if err := json.Unmarshal(req.Params[0], &args); err != nil { | 
					
						
							|  |  |  | 		return 0, errArguments | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-19 18:41:50 +01:00
										 |  |  | func (req *RpcRequest) ToCompileArgs() (string, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errArguments | 
					
						
							| 
									
										
										
										
											2015-02-19 18:41:50 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args string | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-02-19 18:41:50 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | func (req *RpcRequest) ToFilterArgs() (*FilterOptions, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args := new(FilterOptions) | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-05 11:55:03 -08:00
										 |  |  | func (req *RpcRequest) ToFilterStringArgs() (string, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errArguments | 
					
						
							| 
									
										
										
										
											2015-02-05 11:55:03 -08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args string | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-02-05 11:55:03 -08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-19 13:21:37 +01:00
										 |  |  | func (req *RpcRequest) ToUninstallFilterArgs() (int, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return 0, errArguments | 
					
						
							| 
									
										
										
										
											2015-02-19 13:21:37 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args int | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return 0, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-02-19 13:21:37 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | func (req *RpcRequest) ToFilterChangedArgs() (int, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return 0, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var id int | 
					
						
							|  |  |  | 	r := bytes.NewReader(req.Params[0]) | 
					
						
							|  |  |  | 	err := json.NewDecoder(r).Decode(&id) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return 0, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-29 16:52:00 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	return id, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | func (req *RpcRequest) ToDbPutArgs() (*DbArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 3 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args DbArgs | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args.Database) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	err = json.Unmarshal(req.Params[1], &args.Key) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	err = json.Unmarshal(req.Params[2], &args.Value) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	return &args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToDbGetArgs() (*DbArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 2 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args DbArgs | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args.Database) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	err = json.Unmarshal(req.Params[1], &args.Key) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 20:39:26 +01:00
										 |  |  | 	return &args, nil | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToWhisperFilterArgs() (*xeth.Options, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args xeth.Options | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, NewErrorWithMessage(errDecodeArgs, err.Error()) | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	return &args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-19 11:49:58 +01:00
										 |  |  | func (req *RpcRequest) ToIdArgs() (int, error) { | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return 0, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var id int | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &id) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return 0, errDecodeArgs | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	return id, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return nil, errArguments | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args WhisperMessageArgs | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil, err | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-30 13:25:12 +01:00
										 |  |  | 	return &args, nil | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-01-30 13:47:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errArguments | 
					
						
							| 
									
										
										
										
											2015-01-30 13:47:18 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args string | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return "", err | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-30 13:47:18 +01:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-02-17 16:54:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToRegisterArgs() (string, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errArguments | 
					
						
							| 
									
										
										
										
											2015-02-17 16:54:52 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args string | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return "", err | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-17 16:54:52 +01:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (req *RpcRequest) ToWatchTxArgs() (string, error) { | 
					
						
							|  |  |  | 	if len(req.Params) < 1 { | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 		return "", errArguments | 
					
						
							| 
									
										
										
										
											2015-02-17 16:54:52 +01:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	var args string | 
					
						
							|  |  |  | 	err := json.Unmarshal(req.Params[0], &args) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return "", err | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-24 19:05:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-17 16:54:52 +01:00
										 |  |  | 	return args, nil | 
					
						
							|  |  |  | } |