stadar 0.1.6

Rust SDK for the stadar.net esports data API.
//! Convenience constructor reading `STADAR_API_KEY` (and optionally
//! `STADAR_API_BASE_URL`) from the environment.
//!
//! Survives openapi-generator regeneration (listed in
//! `clients/rust/.openapi-generator-ignore`).

use crate::apis::configuration::{ApiKey, Configuration};

/// Error returned by [`from_env`] when `STADAR_API_KEY` is unset.
#[derive(Debug, thiserror::Error, PartialEq, Eq)]
pub enum FromEnvError {
    #[error("stadar: STADAR_API_KEY env var is not set")]
    ApiKeyMissing,
}

/// Build a [`Configuration`] authenticated with `STADAR_API_KEY` from
/// the environment. Returns [`FromEnvError::ApiKeyMissing`] when the
/// env var is unset. `STADAR_API_BASE_URL` overrides the default base
/// path when set.
///
/// # Example
///
/// ```no_run
/// let cfg = stadar::from_env::from_env()?;
/// let games = stadar::apis::games_api::list_games(&cfg, None).await?;
/// # Ok::<(), Box<dyn std::error::Error>>(())
/// ```
pub fn from_env() -> Result<Configuration, FromEnvError> {
    let api_key = std::env::var("STADAR_API_KEY").map_err(|_| FromEnvError::ApiKeyMissing)?;
    if api_key.is_empty() {
        return Err(FromEnvError::ApiKeyMissing);
    }
    let mut cfg = Configuration::new();
    cfg.bearer_access_token = Some(api_key.clone());
    cfg.api_key = Some(ApiKey { prefix: Some("Bearer".to_string()), key: api_key });
    if let Ok(base) = std::env::var("STADAR_API_BASE_URL") {
        if !base.is_empty() {
            cfg.base_path = base;
        }
    }
    Ok(cfg)
}