radrootsd

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

mod.rs (927B)


      1 #![forbid(unsafe_code)]
      2 
      3 use std::net::SocketAddr;
      4 
      5 use anyhow::Result;
      6 use jsonrpsee::server::{RpcModule, ServerHandle};
      7 
      8 use crate::app::config::RpcConfig;
      9 use crate::core::Radrootsd;
     10 
     11 mod auth;
     12 mod context;
     13 mod error;
     14 mod params;
     15 mod registry;
     16 mod server;
     17 
     18 pub mod methods;
     19 pub mod nip46;
     20 
     21 pub use context::RpcContext;
     22 pub use error::RpcError;
     23 pub use registry::MethodRegistry;
     24 
     25 pub async fn start_rpc(
     26     state: Radrootsd,
     27     addr: SocketAddr,
     28     rpc_cfg: &RpcConfig,
     29 ) -> Result<ServerHandle> {
     30     state.publish_proxy.config.validate()?;
     31     let registry = MethodRegistry::default();
     32     let ctx = RpcContext::new(state, registry.clone());
     33     let publish_proxy_store = ctx.state.publish_proxy.store.clone();
     34 
     35     let mut root = RpcModule::new(ctx.clone());
     36     methods::register_all(&mut root, ctx, registry)?;
     37 
     38     let handle = server::start_server(addr, rpc_cfg, publish_proxy_store, root).await?;
     39     Ok(handle)
     40 }