error.rs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. }
  19. fn to_tuple(e: RpcError) -> (i64, String) {
  20. let msg = match e {
  21. RpcError::Keygen => "Failed generating keypair",
  22. RpcError::Nan => "Not a number",
  23. RpcError::LessThanNegOne => "Number cannot be lower than -1",
  24. RpcError::KeypairFetch => "Failed fetching keypairs from wallet",
  25. RpcError::KeypairNotFound => "Keypair not found",
  26. RpcError::InvalidKeypair => "Invalid keypair",
  27. RpcError::UnknownSlot => "Did not find slot",
  28. RpcError::TxBuildFail => "Failed building transaction",
  29. RpcError::NetworkNameError => "Unknown network name",
  30. RpcError::ParseError => "Parse error",
  31. RpcError::TxBroadcastFail => "Failed broadcasting transaction",
  32. RpcError::NotYetSynced => "Blockchain not yet synced",
  33. RpcError::InvalidAddressParam => "Invalid address parameter",
  34. RpcError::InvalidAmountParam => "invalid amount parameter",
  35. };
  36. (e as i64, msg.to_string())
  37. }
  38. pub fn server_error(e: RpcError, id: Value) -> JsonResult {
  39. let (code, msg) = to_tuple(e);
  40. JsonError::new(ServerError(code), Some(msg), id).into()
  41. }