|
|
@@ -25,12 +25,11 @@ import (
|
|
|
"github.com/ethereum/go-ethereum/xeth"
|
|
|
)
|
|
|
|
|
|
-const (
|
|
|
- ErrorArguments = "Error: Insufficient arguments"
|
|
|
- ErrorNotImplemented = "Error: Method not implemented"
|
|
|
- ErrorUnknown = "Error: Unknown error"
|
|
|
- ErrorParseRequest = "Error: Could not parse request"
|
|
|
- ErrorDecodeArgs = "Error: Could not decode arguments"
|
|
|
+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")
|
|
|
)
|
|
|
|
|
|
type RpcRequest struct {
|
|
|
@@ -58,76 +57,72 @@ type RpcErrorObject struct {
|
|
|
// Data interface{} `json:"data"`
|
|
|
}
|
|
|
|
|
|
-func NewErrorResponse(msg string) error {
|
|
|
- return errors.New(msg)
|
|
|
-}
|
|
|
-
|
|
|
-func NewErrorResponseWithError(msg string, err error) error {
|
|
|
- return fmt.Errorf("%s: %v", msg, err)
|
|
|
+func NewErrorWithMessage(err error, msg string) error {
|
|
|
+ return fmt.Errorf("%s: %s", err.Error(), msg)
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToSha3Args() (*Sha3Args, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(Sha3Args)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
if err := json.NewDecoder(r).Decode(args); err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToGetBlockArgs() (*GetBlockArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(GetBlockArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToNewTxArgs() (*NewTxArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(NewTxArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToPushTxArgs() (*PushTxArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(PushTxArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(GetStateArgs)
|
|
|
@@ -135,234 +130,228 @@ func (req *RpcRequest) ToGetStateArgs() (*GetStateArgs, error) {
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToStorageAtArgs() (*GetStorageArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(GetStorageArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToGetTxCountArgs() (*GetTxCountArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(GetTxCountArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToGetBalanceArgs() (*GetBalanceArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(GetBalanceArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(GetCodeAtArgs)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToBoolArgs() (bool, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return false, NewErrorResponse(ErrorArguments)
|
|
|
+ return false, errArguments
|
|
|
}
|
|
|
|
|
|
var args bool
|
|
|
err := json.Unmarshal(req.Params[0], &args)
|
|
|
if err != nil {
|
|
|
- return false, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return false, errDecodeArgs
|
|
|
}
|
|
|
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToCompileArgs() (string, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return "", NewErrorResponse(ErrorArguments)
|
|
|
+ return "", errArguments
|
|
|
}
|
|
|
|
|
|
var args string
|
|
|
err := json.Unmarshal(req.Params[0], &args)
|
|
|
if err != nil {
|
|
|
- return "", NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return "", errDecodeArgs
|
|
|
}
|
|
|
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToFilterArgs() (*FilterOptions, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
args := new(FilterOptions)
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return nil, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToFilterStringArgs() (string, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return "", NewErrorResponse(ErrorArguments)
|
|
|
+ return "", errArguments
|
|
|
}
|
|
|
|
|
|
var args string
|
|
|
err := json.Unmarshal(req.Params[0], &args)
|
|
|
if err != nil {
|
|
|
- return "", NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return "", errDecodeArgs
|
|
|
}
|
|
|
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToUninstallFilterArgs() (int, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return 0, NewErrorResponse(ErrorArguments)
|
|
|
+ return 0, errArguments
|
|
|
}
|
|
|
|
|
|
var args int
|
|
|
err := json.Unmarshal(req.Params[0], &args)
|
|
|
if err != nil {
|
|
|
- return 0, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return 0, errDecodeArgs
|
|
|
}
|
|
|
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToFilterChangedArgs() (int, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return 0, NewErrorResponse(ErrorArguments)
|
|
|
+ return 0, errArguments
|
|
|
}
|
|
|
|
|
|
var id int
|
|
|
r := bytes.NewReader(req.Params[0])
|
|
|
err := json.NewDecoder(r).Decode(&id)
|
|
|
if err != nil {
|
|
|
- return 0, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return 0, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", id, id)
|
|
|
return id, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToDbPutArgs() (*DbArgs, error) {
|
|
|
if len(req.Params) < 3 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
var args DbArgs
|
|
|
err := json.Unmarshal(req.Params[0], &args.Database)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
err = json.Unmarshal(req.Params[1], &args.Key)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
err = json.Unmarshal(req.Params[2], &args.Value)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return &args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToDbGetArgs() (*DbArgs, error) {
|
|
|
if len(req.Params) < 2 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
var args DbArgs
|
|
|
err := json.Unmarshal(req.Params[0], &args.Database)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
|
|
|
err = json.Unmarshal(req.Params[1], &args.Key)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return &args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToWhisperFilterArgs() (*xeth.Options, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
var args xeth.Options
|
|
|
err := json.Unmarshal(req.Params[0], &args)
|
|
|
if err != nil {
|
|
|
- return nil, NewErrorResponseWithError(ErrorDecodeArgs, err)
|
|
|
+ return nil, NewErrorWithMessage(errDecodeArgs, err.Error())
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return &args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToIdArgs() (int, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return 0, NewErrorResponse(ErrorArguments)
|
|
|
+ return 0, errArguments
|
|
|
}
|
|
|
|
|
|
var id int
|
|
|
err := json.Unmarshal(req.Params[0], &id)
|
|
|
if err != nil {
|
|
|
- return 0, NewErrorResponse(ErrorDecodeArgs)
|
|
|
+ return 0, errDecodeArgs
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", id, id)
|
|
|
+
|
|
|
return id, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return nil, NewErrorResponse(ErrorArguments)
|
|
|
+ return nil, errArguments
|
|
|
}
|
|
|
|
|
|
var args WhisperMessageArgs
|
|
|
@@ -370,13 +359,13 @@ func (req *RpcRequest) ToWhisperPostArgs() (*WhisperMessageArgs, error) {
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return &args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return "", NewErrorResponse(ErrorArguments)
|
|
|
+ return "", errArguments
|
|
|
}
|
|
|
|
|
|
var args string
|
|
|
@@ -384,13 +373,13 @@ func (req *RpcRequest) ToWhisperHasIdentityArgs() (string, error) {
|
|
|
if err != nil {
|
|
|
return "", err
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToRegisterArgs() (string, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return "", NewErrorResponse(ErrorArguments)
|
|
|
+ return "", errArguments
|
|
|
}
|
|
|
|
|
|
var args string
|
|
|
@@ -398,13 +387,13 @@ func (req *RpcRequest) ToRegisterArgs() (string, error) {
|
|
|
if err != nil {
|
|
|
return "", err
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|
|
|
|
|
|
func (req *RpcRequest) ToWatchTxArgs() (string, error) {
|
|
|
if len(req.Params) < 1 {
|
|
|
- return "", NewErrorResponse(ErrorArguments)
|
|
|
+ return "", errArguments
|
|
|
}
|
|
|
|
|
|
var args string
|
|
|
@@ -412,6 +401,6 @@ func (req *RpcRequest) ToWatchTxArgs() (string, error) {
|
|
|
if err != nil {
|
|
|
return "", err
|
|
|
}
|
|
|
- rpclogger.DebugDetailf("%T %v", args, args)
|
|
|
+
|
|
|
return args, nil
|
|
|
}
|