#![forbid(unsafe_code)]
#[cfg(feature = "client")]
pub mod client;
#[cfg(feature = "server")]
pub mod server;
#[cfg(feature = "webfinger")]
pub mod webfinger;
#[cfg(feature = "client")]
pub use client::{ClientError, DEFAULT_PORT, Response, fetch, query};
#[cfg(feature = "server")]
pub use server::{ServerConfig, serve};
#[cfg(feature = "webfinger")]
pub use webfinger::{Jrd, Link, MEDIA_TYPE, acct, request_url};
#[derive(Clone, Debug, Default, PartialEq, Eq)]
pub struct Query {
pub user: Option<String>,
pub verbose: bool,
}
impl Query {
pub fn user(name: impl Into<String>) -> Self {
Self {
user: Some(name.into()),
verbose: false,
}
}
pub fn verbose(mut self) -> Self {
self.verbose = true;
self
}
pub fn wire(&self) -> String {
let user = self.user.as_deref().unwrap_or("");
match (self.verbose, user.is_empty()) {
(true, true) => "/W\r\n".to_string(),
(true, false) => format!("/W {user}\r\n"),
(false, _) => format!("{user}\r\n"),
}
}
}