use url::Url;
use crate::network::builder::{FromNetworkBuilder, NetworkBuilder};
use crate::network::{Info, NetworkClient, NetworkInfo};
use crate::rpc::client::Client;
use std::path::PathBuf;
pub const RPC_URL: &str = "https://rpc.betanet.near.org";
pub struct Betanet {
client: Client,
info: Info,
}
#[async_trait::async_trait]
impl FromNetworkBuilder for Betanet {
async fn from_builder<'a>(build: NetworkBuilder<'a, Self>) -> crate::result::Result<Self> {
let rpc_url = build.rpc_addr.unwrap_or_else(|| RPC_URL.into());
let client = Client::new(&rpc_url, build.api_key)?;
client.wait_for_rpc().await?;
Ok(Self {
client,
info: Info {
name: build.name.into(),
root_id: "near".parse().unwrap(),
keystore_path: PathBuf::from(".near-credentials/betanet/"),
rpc_url: Url::parse(&rpc_url).expect("url is hardcoded"),
},
})
}
}
impl NetworkClient for Betanet {
fn client(&self) -> &Client {
&self.client
}
}
impl NetworkInfo for Betanet {
fn info(&self) -> &Info {
&self.info
}
}