@@ -18,6 +18,7 @@ use std::fmt;
1818
1919use ccore:: AccountProviderError ;
2020use ccore:: Error as CoreError ;
21+ use ckeystore:: Error as KeystoreError ;
2122use cnetwork:: control:: Error as NetworkControlError ;
2223use cstate:: StateError ;
2324use kvdb:: Error as KVDBError ;
@@ -35,6 +36,11 @@ mod codes {
3536 pub const NETWORK_DISABLED : i64 = -32014 ;
3637 pub const NETWORK_CANNOT_DISCONNECT_NOT_CONNECTED_ERROR : i64 = -32015 ;
3738 pub const ACCOUNT_PROVIDER_ERROR : i64 = -32016 ;
39+ pub const KEYSTORE_ERROR : i64 = -32040 ;
40+ pub const KEY_ERROR : i64 = -32041 ;
41+ pub const ALREADY_EXISTS : i64 = -32042 ;
42+ pub const WRONG_PASSWORD : i64 = -32043 ;
43+ pub const NO_SUCH_ACCOUNT : i64 = -32044 ;
3844}
3945
4046pub fn core < T : Into < CoreError > > ( error : T ) -> Error {
@@ -97,10 +103,39 @@ pub fn rlp(error: DecoderError) -> Error {
97103}
98104
99105pub fn account_provider ( error : AccountProviderError ) -> Error {
100- Error {
101- code : ErrorCode :: ServerError ( codes:: ACCOUNT_PROVIDER_ERROR ) ,
102- message : "AccountProvider error" . into ( ) ,
103- data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
106+ match error {
107+ AccountProviderError :: KeystoreError ( error) => match error {
108+ KeystoreError :: InvalidAccount => Error {
109+ code : ErrorCode :: ServerError ( codes:: NO_SUCH_ACCOUNT ) ,
110+ message : "No Such Account" . into ( ) ,
111+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
112+ } ,
113+ KeystoreError :: InvalidPassword => Error {
114+ code : ErrorCode :: ServerError ( codes:: WRONG_PASSWORD ) ,
115+ message : "Wrong Password" . into ( ) ,
116+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
117+ } ,
118+ KeystoreError :: AlreadyExists => Error {
119+ code : ErrorCode :: ServerError ( codes:: ALREADY_EXISTS ) ,
120+ message : "Already Exists" . into ( ) ,
121+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
122+ } ,
123+ _ => Error {
124+ code : ErrorCode :: ServerError ( codes:: KEYSTORE_ERROR ) ,
125+ message : "Keystore Error" . into ( ) ,
126+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
127+ } ,
128+ } ,
129+ AccountProviderError :: KeyError ( _) => Error {
130+ code : ErrorCode :: ServerError ( codes:: KEY_ERROR ) ,
131+ message : "Key Error" . into ( ) ,
132+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
133+ } ,
134+ _ => Error {
135+ code : ErrorCode :: ServerError ( codes:: ACCOUNT_PROVIDER_ERROR ) ,
136+ message : "AccountProvider Error" . into ( ) ,
137+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
138+ } ,
104139 }
105140}
106141
0 commit comments