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 }