use std::time::Duration;
pub const PRODUCTION_BASE_URL: &str = "https://api.snippe.sh";
pub const SANDBOX_BASE_URL: &str = "https://sandbox.snippe.sh";
pub const DEFAULT_TIMEOUT: Duration = Duration::from_secs(30);
pub const DEFAULT_API_VERSION: &str = "2026-01-25";
pub const USER_AGENT: &str = concat!("snippe-rust/", env!("CARGO_PKG_VERSION"));
#[derive(Debug, Default, Clone, Copy, Eq, PartialEq, Hash)]
pub enum Environment {
Sandbox,
#[default]
Production,
}
impl Environment {
pub const fn base_url(self) -> &'static str {
match self {
Self::Sandbox => SANDBOX_BASE_URL,
Self::Production => PRODUCTION_BASE_URL,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn environment_base_urls() {
assert_eq!(Environment::Production.base_url(), PRODUCTION_BASE_URL);
assert_eq!(Environment::Sandbox.base_url(), SANDBOX_BASE_URL);
}
#[test]
fn default_environment_is_production() {
assert_eq!(Environment::default(), Environment::Production);
}
}