error.rs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. use serde_json::Value;
  2. use darkfi::rpc::jsonrpc::{ErrorCode::ServerError, JsonError, JsonResult};
  3. pub enum RpcError {
  4. Keygen = -32101,
  5. Nan = -32102,
  6. LessThanNegOne = -32103,
  7. KeypairFetch = -32104,
  8. KeypairNotFound = -32105,
  9. InvalidKeypair = -32106,
  10. UnknownSlot = -32107,
  11. TxBuildFail = -32108,
  12. NetworkNameError = -32109,
  13. ParseError = -32110,
  14. TxBroadcastFail = -32111,
  15. NotYetSynced = -32112,
  16. InvalidAddressParam = -32113,
  17. InvalidAmountParam = -32114,
  18. DecryptionFailed = -32115,
  19. }
  20. fn to_tuple(e: RpcError) -> (i64, String) {
  21. let msg = match e {
  22. RpcError::Keygen => "Failed generating keypair",
  23. RpcError::Nan => "Not a number",
  24. RpcError::LessThanNegOne => "Number cannot be lower than -1",
  25. RpcError::KeypairFetch => "Failed fetching keypairs from wallet",
  26. RpcError::KeypairNotFound => "Keypair not found",
  27. RpcError::InvalidKeypair => "Invalid keypair",
  28. RpcError::UnknownSlot => "Did not find slot",
  29. RpcError::TxBuildFail => "Failed building transaction",
  30. RpcError::NetworkNameError => "Unknown network name",
  31. RpcError::ParseError => "Parse error",
  32. RpcError::TxBroadcastFail => "Failed broadcasting transaction",
  33. RpcError::NotYetSynced => "Blockchain not yet synced",
  34. RpcError::InvalidAddressParam => "Invalid address parameter",
  35. RpcError::InvalidAmountParam => "invalid amount parameter",
  36. RpcError::DecryptionFailed => "Decryption failed",
  37. };
  38. (e as i64, msg.to_string())
  39. }
  40. pub fn server_error(e: RpcError, id: Value) -> JsonResult {
  41. let (code, msg) = to_tuple(e);
  42. JsonError::new(ServerError(code), Some(msg), id).into()
  43. }