radrootsd

JSON-RPC bridge for Radroots event publishing
git clone https://radroots.dev/git/radrootsd.git
Log | Files | Refs | README | LICENSE

error.rs (1114B)


      1 #![forbid(unsafe_code)]
      2 
      3 use jsonrpsee::types::{ErrorObject, ErrorObjectOwned};
      4 use thiserror::Error;
      5 
      6 #[derive(Debug, Error)]
      7 pub enum RpcError {
      8     #[error("failed to add relay {0}: {1}")]
      9     AddRelay(String, String),
     10     #[error("no relays configured; call relays.add first")]
     11     NoRelays,
     12     #[error("invalid params: {0}")]
     13     InvalidParams(String),
     14     #[error("method not found: {0}")]
     15     MethodNotFound(String),
     16     #[error("unauthorized: {0}")]
     17     Unauthorized(String),
     18     #[error("{0}")]
     19     Other(String),
     20 }
     21 
     22 impl From<RpcError> for ErrorObjectOwned {
     23     fn from(err: RpcError) -> Self {
     24         match err {
     25             RpcError::InvalidParams(msg) => ErrorObject::owned(-32602, msg, None::<()>),
     26             RpcError::MethodNotFound(name) => {
     27                 ErrorObject::owned(-32601, format!("method not found: {name}"), None::<()>)
     28             }
     29             RpcError::Unauthorized(msg) => {
     30                 ErrorObject::owned(-32001, format!("unauthorized: {msg}"), None::<()>)
     31             }
     32             other => ErrorObject::owned(-32000, other.to_string(), None::<()>),
     33         }
     34     }
     35 }