use crate::auth::dpop::DpopClient; use std::env; use anyhow::Context; pub const CLIENT_META_PATH: &str = "/.well-known/client-metadata.json"; #[derive(Clone)] pub struct AppConfig { pub app_url: String, pub client_id: String, pub redirect_uri: String, pub dpop_client: DpopClient, } impl AppConfig { pub fn new() -> Result { let app_url = env::var("APP_URL").context("APP_URL is not set")?; let client_id = format!("{}{}", app_url, CLIENT_META_PATH); let redirect_uri = format!("{}/auth/callback", app_url); Ok(Self { app_url, client_id, redirect_uri, dpop_client: DpopClient::new(), }) } }