use dotenv::dotenv;
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize, Clone)]
pub struct LotusConfig {
    pub host_url: String,
    pub content_type: String,
    pub token: String,
}

impl LotusConfig {
    pub fn from_env() -> LotusConfig {
        dotenv().unwrap();
        LotusConfig {
            host_url: std::env::var("LOTUS_API_HOST_URL").expect("LOTUS_API_HOST_URL is required"),
            content_type: std::env::var("LOTUS_HTTP_CONTENT_TYPE")
                .unwrap_or_else(|_| "application/json".to_string()),
            token: std::env::var("LOTUS_API_TOKEN").unwrap_or_else(|_| "".to_string()),
        }
    }

    pub fn new(
        host_url: String,
        content_type: Option<String>,
        token: Option<String>,
    ) -> LotusConfig {
        LotusConfig {
            host_url,
            content_type: content_type.unwrap_or_else(|| "application/json".to_string()),
            token: token.unwrap_or_else(|| "".to_string()),
        }
    }
}
