radrootsd

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

session_status.rs (869B)


      1 use anyhow::Result;
      2 use jsonrpsee::server::RpcModule;
      3 use serde::Deserialize;
      4 
      5 use crate::core::nip46::session::Nip46SessionView;
      6 use crate::transport::jsonrpc::nip46::session;
      7 use crate::transport::jsonrpc::{MethodRegistry, RpcContext, RpcError};
      8 
      9 #[derive(Debug, Deserialize)]
     10 struct Nip46SessionStatusParams {
     11     session_id: String,
     12 }
     13 
     14 pub fn register(m: &mut RpcModule<RpcContext>, registry: &MethodRegistry) -> Result<()> {
     15     registry.track("nip46.session.status");
     16     m.register_async_method("nip46.session.status", |params, ctx, _| async move {
     17         let Nip46SessionStatusParams { session_id } = params
     18             .parse()
     19             .map_err(|e| RpcError::InvalidParams(e.to_string()))?;
     20         let session = session::get_session(ctx.as_ref(), &session_id).await?;
     21         Ok::<Nip46SessionView, RpcError>(session.public_view())
     22     })?;
     23     Ok(())
     24 }