keygen-rs 0.11.1

Unofficial Rust SDK for integrating with the keygen.sh licensing service.
Documentation
#![allow(dead_code)]

use keygen_rs::{
    config::{self, KeygenConfig},
    errors::Error,
};
use std::env;
use std::time::{SystemTime, UNIX_EPOCH};

pub fn load_env() {
    dotenv::dotenv().ok();
}

pub fn configure_admin() -> Result<(), Error> {
    config::set_config(KeygenConfig {
        api_url: env::var("KEYGEN_API_URL").unwrap_or_else(|_| "https://api.keygen.sh".to_string()),
        account: required_env("KEYGEN_ACCOUNT"),
        token: Some(required_env("KEYGEN_ADMIN_TOKEN")),
        ..KeygenConfig::default()
    })
}

pub fn required_env(name: &str) -> String {
    env::var(name).unwrap_or_else(|_| panic!("{name} must be set"))
}

pub fn product_id_from_env() -> String {
    env::var("KEYGEN_PRODUCT_ID")
        .or_else(|_| env::var("KEYGEN_PRODUCT"))
        .expect("KEYGEN_PRODUCT_ID or KEYGEN_PRODUCT must be set")
}

pub fn unique_suffix() -> String {
    SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .expect("system clock must be after unix epoch")
        .as_millis()
        .to_string()
}