error.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. use serde_json::Value;
  2. use darkfi::rpc::{
  3. jsonrpc,
  4. jsonrpc::{ErrorCode::ServerError, JsonResult},
  5. };
  6. pub enum RpcError {
  7. Keygen = -32101,
  8. Nan = -32102,
  9. LessThanNegOne = -32103,
  10. KeypairFetch = -32104,
  11. KeypairNotFound = -32105,
  12. InvalidKeypair = -32106,
  13. UnknownSlot = -32107,
  14. TxBuildFail = -32108,
  15. NetworkNameError = -32109,
  16. ParseError = -32110,
  17. TxBroadcastFail = -32111,
  18. NotYetSynced = -32112,
  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. };
  35. (e as i64, msg.to_string())
  36. }
  37. pub fn server_error(e: RpcError, id: Value) -> JsonResult {
  38. let (code, msg) = to_tuple(e);
  39. jsonrpc::error(ServerError(code), Some(msg), id).into()
  40. }