use crate::rpc::network::NetworkRpc;
use anyhow::Result;
use serde_json::{json, Value};
pub async fn get_network_info(network: &NetworkRpc) -> Result<Value> {
let info = network.get_network_info().await?;
Ok(info)
}
pub async fn get_network_peers(network: &NetworkRpc) -> Result<Value> {
let peers = network.get_peer_info().await?;
Ok(peers)
}
pub async fn get_connection_count(network: &NetworkRpc) -> Result<Value> {
let params = json!([]);
let count = network.get_connection_count(¶ms).await?;
Ok(count)
}
pub async fn get_net_totals(network: &NetworkRpc) -> Result<Value> {
let params = json!([]);
let totals = network.get_net_totals(¶ms).await?;
Ok(totals)
}
pub async fn get_added_node_info(
network: &NetworkRpc,
node: Option<&str>,
dns: bool,
) -> Result<Value> {
let params = if let Some(n) = node {
json!([n, dns])
} else {
json!([dns])
};
let info = network.getaddednodeinfo(¶ms).await?;
Ok(info)
}
pub async fn get_node_addresses(network: &NetworkRpc, count: Option<u32>) -> Result<Value> {
let params = if let Some(c) = count {
json!([c])
} else {
json!([])
};
let addresses = network.getnodeaddresses(¶ms).await?;
Ok(addresses)
}
pub async fn list_banned(network: &NetworkRpc) -> Result<Value> {
let params = json!([]);
let banned = network.list_banned(¶ms).await?;
Ok(banned)
}
pub async fn ping_network(network: &NetworkRpc) -> Result<Value> {
let params = json!([]);
let result = network.ping(¶ms).await?;
Ok(result)
}
pub async fn add_node(network: &NetworkRpc, address: &str, command: &str) -> Result<Value> {
let params = json!([address, command]);
let result = network.add_node(¶ms).await?;
Ok(result)
}
pub async fn disconnect_node(network: &NetworkRpc, address: &str) -> Result<Value> {
let params = json!([address]);
let result = network.disconnect_node(¶ms).await?;
Ok(result)
}
pub async fn set_network_active(network: &NetworkRpc, state: bool) -> Result<Value> {
let params = json!([state]);
let result = network.setnetworkactive(¶ms).await?;
Ok(result)
}
pub async fn set_ban(
network: &NetworkRpc,
subnet: &str,
command: &str,
bantime: Option<u64>,
absolute: Option<bool>,
) -> Result<Value> {
let mut params = json!([subnet, command]);
if let Some(bt) = bantime {
params.as_array_mut().unwrap().push(json!(bt));
}
if let Some(abs) = absolute {
params.as_array_mut().unwrap().push(json!(abs));
}
let result = network.set_ban(¶ms).await?;
Ok(result)
}
pub async fn clear_banned(network: &NetworkRpc) -> Result<Value> {
let params = json!([]);
let result = network.clear_banned(¶ms).await?;
Ok(result)
}