@@ -19,6 +19,7 @@ use std::fmt;
1919use ccore:: AccountProviderError ;
2020use ccore:: Error as CoreError ;
2121use ckey:: Error as KeyError ;
22+ use ckeystore:: Error as KeystoreError ;
2223use cnetwork:: control:: Error as NetworkControlError ;
2324use cstate:: StateError ;
2425use ctypes:: parcel:: Error as ParcelError ;
@@ -43,6 +44,11 @@ mod codes {
4344 pub const TOO_LOW_FEE : i64 = -32033 ;
4445 pub const TOO_CHEAP_TO_REPLACE : i64 = -32034 ;
4546 pub const INVALID_NONCE : i64 = -32035 ;
47+ pub const KEYSTORE_ERROR : i64 = -32040 ;
48+ pub const KEY_ERROR : i64 = -32041 ;
49+ pub const ALREADY_EXISTS : i64 = -32042 ;
50+ pub const WRONG_PASSWORD : i64 = -32043 ;
51+ pub const NO_SUCH_ACCOUNT : i64 = -32044 ;
4652 pub const UNKNOWN_ERROR : i64 = -32099 ;
4753}
4854
@@ -148,10 +154,39 @@ pub fn rlp(error: DecoderError) -> Error {
148154}
149155
150156pub fn account_provider ( error : AccountProviderError ) -> Error {
151- Error {
152- code : ErrorCode :: ServerError ( codes:: ACCOUNT_PROVIDER_ERROR ) ,
153- message : "AccountProvider error" . into ( ) ,
154- data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
157+ match error {
158+ AccountProviderError :: KeystoreError ( error) => match error {
159+ KeystoreError :: InvalidAccount => Error {
160+ code : ErrorCode :: ServerError ( codes:: NO_SUCH_ACCOUNT ) ,
161+ message : "No Such Account" . into ( ) ,
162+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
163+ } ,
164+ KeystoreError :: InvalidPassword => Error {
165+ code : ErrorCode :: ServerError ( codes:: WRONG_PASSWORD ) ,
166+ message : "Wrong Password" . into ( ) ,
167+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
168+ } ,
169+ KeystoreError :: AlreadyExists => Error {
170+ code : ErrorCode :: ServerError ( codes:: ALREADY_EXISTS ) ,
171+ message : "Already Exists" . into ( ) ,
172+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
173+ } ,
174+ _ => Error {
175+ code : ErrorCode :: ServerError ( codes:: KEYSTORE_ERROR ) ,
176+ message : "Keystore Error" . into ( ) ,
177+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
178+ } ,
179+ } ,
180+ AccountProviderError :: KeyError ( _) => Error {
181+ code : ErrorCode :: ServerError ( codes:: KEY_ERROR ) ,
182+ message : "Key Error" . into ( ) ,
183+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
184+ } ,
185+ _ => Error {
186+ code : ErrorCode :: ServerError ( codes:: ACCOUNT_PROVIDER_ERROR ) ,
187+ message : "AccountProvider Error" . into ( ) ,
188+ data : Some ( Value :: String ( format ! ( "{:?}" , error) ) ) ,
189+ } ,
155190 }
156191}
157192
0 commit comments