diff options
Diffstat (limited to 'rpc')
-rw-r--r-- | rpc/api/personal.go | 20 | ||||
-rw-r--r-- | rpc/api/personal_args.go | 34 | ||||
-rw-r--r-- | rpc/api/shh.go | 1 | ||||
-rw-r--r-- | rpc/api/utils.go | 1 | ||||
-rw-r--r-- | rpc/jeth.go | 9 | ||||
-rw-r--r-- | rpc/shared/types.go | 6 |
6 files changed, 12 insertions, 59 deletions
diff --git a/rpc/api/personal.go b/rpc/api/personal.go index 6c73ac83d..1fb412612 100644 --- a/rpc/api/personal.go +++ b/rpc/api/personal.go @@ -36,7 +36,6 @@ var ( personalMapping = map[string]personalhandler{ "personal_listAccounts": (*personalApi).ListAccounts, "personal_newAccount": (*personalApi).NewAccount, - "personal_deleteAccount": (*personalApi).DeleteAccount, "personal_unlockAccount": (*personalApi).UnlockAccount, } ) @@ -105,28 +104,13 @@ func (self *personalApi) NewAccount(req *shared.Request) (interface{}, error) { return acc.Address.Hex(), err } -func (self *personalApi) DeleteAccount(req *shared.Request) (interface{}, error) { - args := new(DeleteAccountArgs) - if err := self.codec.Decode(req.Params, &args); err != nil { - return nil, shared.NewDecodeParamError(err.Error()) - } - - addr := common.HexToAddress(args.Address) - am := self.ethereum.AccountManager() - if err := am.DeleteAccount(addr, args.Passphrase); err == nil { - return true, nil - } else { - return false, err - } -} - func (self *personalApi) UnlockAccount(req *shared.Request) (interface{}, error) { args := new(UnlockAccountArgs) if err := self.codec.Decode(req.Params, &args); err != nil { return nil, shared.NewDecodeParamError(err.Error()) } - if len(args.Passphrase) == 0 { + if args.Passphrase == nil { fe := self.xeth.Frontend() if fe == nil { return false, fmt.Errorf("No password provided") @@ -137,6 +121,6 @@ func (self *personalApi) UnlockAccount(req *shared.Request) (interface{}, error) am := self.ethereum.AccountManager() addr := common.HexToAddress(args.Address) - err := am.TimedUnlock(addr, args.Passphrase, time.Duration(args.Duration)*time.Second) + err := am.TimedUnlock(addr, *args.Passphrase, time.Duration(args.Duration)*time.Second) return err == nil, err } diff --git a/rpc/api/personal_args.go b/rpc/api/personal_args.go index 5a584fb0c..73dc6285e 100644 --- a/rpc/api/personal_args.go +++ b/rpc/api/personal_args.go @@ -44,39 +44,9 @@ func (args *NewAccountArgs) UnmarshalJSON(b []byte) (err error) { return shared.NewInvalidTypeError("passhrase", "not a string") } -type DeleteAccountArgs struct { - Address string - Passphrase string -} - -func (args *DeleteAccountArgs) UnmarshalJSON(b []byte) (err error) { - var obj []interface{} - if err := json.Unmarshal(b, &obj); err != nil { - return shared.NewDecodeParamError(err.Error()) - } - - if len(obj) < 2 { - return shared.NewInsufficientParamsError(len(obj), 2) - } - - if addr, ok := obj[0].(string); ok { - args.Address = addr - } else { - return shared.NewInvalidTypeError("address", "not a string") - } - - if passhrase, ok := obj[1].(string); ok { - args.Passphrase = passhrase - } else { - return shared.NewInvalidTypeError("passhrase", "not a string") - } - - return nil -} - type UnlockAccountArgs struct { Address string - Passphrase string + Passphrase *string Duration int } @@ -100,7 +70,7 @@ func (args *UnlockAccountArgs) UnmarshalJSON(b []byte) (err error) { if len(obj) >= 2 && obj[1] != nil { if passphrasestr, ok := obj[1].(string); ok { - args.Passphrase = passphrasestr + args.Passphrase = &passphrasestr } else { return shared.NewInvalidTypeError("passphrase", "not a string") } diff --git a/rpc/api/shh.go b/rpc/api/shh.go index 9ca6f9dda..60e805605 100644 --- a/rpc/api/shh.go +++ b/rpc/api/shh.go @@ -38,6 +38,7 @@ var ( "shh_newIdentity": (*shhApi).NewIdentity, "shh_newFilter": (*shhApi).NewFilter, "shh_uninstallFilter": (*shhApi).UninstallFilter, + "shh_getMessages": (*shhApi).GetMessages, "shh_getFilterChanges": (*shhApi).GetFilterChanges, } ) diff --git a/rpc/api/utils.go b/rpc/api/utils.go index 50c607d16..5072dc2cd 100644 --- a/rpc/api/utils.go +++ b/rpc/api/utils.go @@ -118,7 +118,6 @@ var ( "personal": []string{ "listAccounts", "newAccount", - "deleteAccount", "unlockAccount", }, "shh": []string{ diff --git a/rpc/jeth.go b/rpc/jeth.go index 757f6b7eb..ae2603ae4 100644 --- a/rpc/jeth.go +++ b/rpc/jeth.go @@ -44,11 +44,12 @@ func NewJeth(ethApi shared.EthereumApi, re *jsre.JSRE, client comms.EthereumClie } func (self *Jeth) err(call otto.FunctionCall, code int, msg string, id interface{}) (response otto.Value) { - errObj := fmt.Sprintf("{\"message\": \"%s\", \"code\": %d}", msg, code) - retResponse := fmt.Sprintf("ret_response = JSON.parse('{\"jsonrpc\": \"%s\", \"id\": %v, \"error\": %s}');", shared.JsonRpcVersion, id, errObj) + m := shared.NewRpcErrorResponse(id, shared.JsonRpcVersion, code, fmt.Errorf(msg)) + errObj, _ := json.Marshal(m.Error) + errRes, _ := json.Marshal(m) - call.Otto.Run("ret_error = " + errObj) - res, _ := call.Otto.Run(retResponse) + call.Otto.Run("ret_error = " + string(errObj)) + res, _ := call.Otto.Run("ret_response = " + string(errRes)) return res } diff --git a/rpc/shared/types.go b/rpc/shared/types.go index f58924976..db328234d 100644 --- a/rpc/shared/types.go +++ b/rpc/shared/types.go @@ -74,11 +74,9 @@ type ErrorObject struct { } // Create RPC error response, this allows for custom error codes -func NewRpcErrorResponse(id interface{}, jsonrpcver string, errCode int, err error) *interface{} { - var response interface{} - +func NewRpcErrorResponse(id interface{}, jsonrpcver string, errCode int, err error) *ErrorResponse { jsonerr := &ErrorObject{errCode, err.Error()} - response = ErrorResponse{Jsonrpc: jsonrpcver, Id: id, Error: jsonerr} + response := ErrorResponse{Jsonrpc: jsonrpcver, Id: id, Error: jsonerr} glog.V(logger.Detail).Infof("Generated error response: %s", response) return &response |