session_require_auth.rs (1251B)
1 #![forbid(unsafe_code)] 2 3 use anyhow::Result; 4 use jsonrpsee::server::RpcModule; 5 use serde::{Deserialize, Serialize}; 6 7 use crate::transport::jsonrpc::{MethodRegistry, RpcContext, RpcError}; 8 9 #[derive(Debug, Deserialize)] 10 struct Nip46SessionRequireAuthParams { 11 session_id: String, 12 auth_url: String, 13 } 14 15 #[derive(Clone, Debug, Serialize)] 16 struct Nip46SessionRequireAuthResponse { 17 required: bool, 18 } 19 20 pub fn register(m: &mut RpcModule<RpcContext>, registry: &MethodRegistry) -> Result<()> { 21 registry.track("nip46.session.require_auth"); 22 m.register_async_method("nip46.session.require_auth", |params, ctx, _| async move { 23 let Nip46SessionRequireAuthParams { 24 session_id, 25 auth_url, 26 } = params 27 .parse() 28 .map_err(|e| RpcError::InvalidParams(e.to_string()))?; 29 if auth_url.trim().is_empty() { 30 return Err(RpcError::InvalidParams("auth_url is empty".to_string())); 31 } 32 let required = ctx 33 .state 34 .nip46_sessions 35 .require_auth(&session_id, auth_url) 36 .await; 37 Ok::<Nip46SessionRequireAuthResponse, RpcError>(Nip46SessionRequireAuthResponse { 38 required, 39 }) 40 })?; 41 Ok(()) 42 }