pub use connection::Connection;
use std::path::PathBuf;
pub mod connection;
#[derive(Debug, Clone)]
pub struct ClientConfig {
pub socket_path: PathBuf,
}
impl Default for ClientConfig {
fn default() -> Self {
Self {
socket_path: default_socket_path(),
}
}
}
fn default_socket_path() -> PathBuf {
dirs::home_dir()
.expect("no home directory")
.join(".walrus")
.join("walrus.sock")
}
pub struct WalrusClient {
config: ClientConfig,
}
impl WalrusClient {
pub fn new(config: ClientConfig) -> Self {
Self { config }
}
pub fn config(&self) -> &ClientConfig {
&self.config
}
pub fn socket_path(mut self, path: impl Into<PathBuf>) -> Self {
self.config.socket_path = path.into();
self
}
pub async fn connect(&self) -> anyhow::Result<Connection> {
Connection::connect(&self.config.socket_path).await
}
}