1use crate::API_ENDPOINT;
2use derive_builder::Builder;
3
4#[cfg(not(feature = "async-client"))]
5mod blocking;
6#[cfg(not(feature = "async-client"))]
7pub use blocking::client;
8#[cfg(not(feature = "async-client"))]
9pub use blocking::Client;
10
11#[cfg(feature = "async-client")]
12mod async_client;
13#[cfg(feature = "async-client")]
14pub use async_client::client;
15#[cfg(feature = "async-client")]
16pub use async_client::Client;
17
18#[derive(Builder)]
19pub struct ClientOptions {
20 #[builder(default = "API_ENDPOINT.to_string()")]
21 api_endpoint: String,
22 api_key: String,
23
24 #[builder(default = "30")]
25 request_timeout_seconds: u64,
26}
27
28impl From<&str> for ClientOptions {
29 fn from(api_key: &str) -> Self {
30 ClientOptionsBuilder::default()
31 .api_key(api_key.to_string())
32 .build()
33 .expect("We always set the API key, so this is infallible")
34 }
35}