kaspa_cli_lib/modules/
server.rs

1use crate::imports::*;
2use kaspa_wrpc_client::parse::parse_host;
3
4#[derive(Default, Handler)]
5#[help("Set RPC server address")]
6pub struct Server;
7
8impl Server {
9    async fn main(self: Arc<Self>, ctx: &Arc<dyn Context>, argv: Vec<String>, _cmd: &str) -> Result<()> {
10        let ctx = ctx.clone().downcast_arc::<KaspaCli>()?;
11
12        if let Some(url) = argv.first() {
13            let Ok(_) = parse_host(url) else {
14                tprintln!(ctx, "Invalid host: {url}");
15                return Ok(());
16            };
17
18            ctx.wallet().settings().set(WalletSettings::Server, url).await?;
19            tprintln!(ctx, "Setting RPC server to: {url}");
20        } else {
21            let server = ctx.wallet().settings().get(WalletSettings::Server).unwrap_or_else(|| "n/a".to_string());
22            tprintln!(ctx, "Current RPC server is: {server}");
23        }
24
25        Ok(())
26    }
27}