posthog_rs/client/
mod.rs

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}