55 lines
1.2 KiB
Rust
55 lines
1.2 KiB
Rust
use std::fmt;
|
|
|
|
use crate::auth::ApiKey;
|
|
|
|
#[derive(Clone)]
|
|
pub struct ClientOptions {
|
|
endpoint: String,
|
|
api_key: Option<ApiKey>,
|
|
plaintext: bool,
|
|
}
|
|
|
|
impl ClientOptions {
|
|
pub fn new(endpoint: impl Into<String>) -> Self {
|
|
Self {
|
|
endpoint: endpoint.into(),
|
|
api_key: None,
|
|
plaintext: true,
|
|
}
|
|
}
|
|
|
|
pub fn with_api_key(mut self, api_key: ApiKey) -> Self {
|
|
self.api_key = Some(api_key);
|
|
self
|
|
}
|
|
|
|
pub fn endpoint(&self) -> &str {
|
|
&self.endpoint
|
|
}
|
|
|
|
pub fn api_key(&self) -> Option<&ApiKey> {
|
|
self.api_key.as_ref()
|
|
}
|
|
|
|
pub fn plaintext(&self) -> bool {
|
|
self.plaintext
|
|
}
|
|
}
|
|
|
|
impl Default for ClientOptions {
|
|
fn default() -> Self {
|
|
Self::new("http://127.0.0.1:5000")
|
|
}
|
|
}
|
|
|
|
impl fmt::Debug for ClientOptions {
|
|
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
formatter
|
|
.debug_struct("ClientOptions")
|
|
.field("endpoint", &self.endpoint)
|
|
.field("api_key", &self.api_key.as_ref().map(|_| "<redacted>"))
|
|
.field("plaintext", &self.plaintext)
|
|
.finish()
|
|
}
|
|
}
|