use std::env;
pub const KEEPALIVE_PING_INTERVAL_SECS: u64 = 50;
pub const SESSION_OPERATION_REQUEST_TIMEOUT_SECS: u64 = 150;
#[derive(Clone, Debug, Default)]
pub struct ConnectionOptions {
pub api_key: Option<String>,
pub domain: Option<String>,
pub api_url: Option<String>,
pub sandbox_url: Option<String>,
pub data_plane_domain: Option<String>,
pub request_timeout_secs: Option<u64>,
}
#[derive(Clone, Debug)]
pub struct ConnectionConfig {
pub api_key: Option<String>,
pub domain: String,
pub api_url: String,
pub sandbox_url: Option<String>,
pub data_plane_domain: String,
pub request_timeout_secs: u64,
}
impl ConnectionConfig {
pub fn new(opts: ConnectionOptions) -> Self {
let domain = opts
.domain
.or_else(|| env::var("WATASU_DOMAIN").ok())
.unwrap_or_else(|| "watasu.io".to_string());
let api_url = opts
.api_url
.or_else(|| env::var("WATASU_API_URL").ok())
.unwrap_or_else(|| format!("https://api.{domain}/v1"));
Self {
api_key: opts.api_key.or_else(|| env::var("WATASU_API_KEY").ok()),
domain,
api_url,
sandbox_url: opts
.sandbox_url
.or_else(|| env::var("WATASU_SANDBOX_URL").ok()),
data_plane_domain: opts
.data_plane_domain
.or_else(|| env::var("WATASU_DATA_PLANE_DOMAIN").ok())
.unwrap_or_else(|| "watasuhost.com".to_string()),
request_timeout_secs: opts
.request_timeout_secs
.unwrap_or(SESSION_OPERATION_REQUEST_TIMEOUT_SECS),
}
}
}