Skip to main content

mockforge_http/auth/
oauth2.rs

1//! OAuth2 utilities and client creation
2//!
3//! This module provides utilities for working with OAuth2 authentication,
4//! including client creation and configuration.
5
6use mockforge_core::{config::OAuth2Config, Error};
7
8/// Create OAuth2 client from configuration
9pub fn create_oauth2_client(config: &OAuth2Config) -> Result<oauth2::basic::BasicClient, Error> {
10    let client_id = oauth2::ClientId::new(config.client_id.clone());
11    let client_secret = oauth2::ClientSecret::new(config.client_secret.clone());
12
13    let auth_url_str = config
14        .auth_url
15        .clone()
16        .ok_or_else(|| Error::generic("OAuth2 auth_url must be configured".to_string()))?;
17    let auth_url = oauth2::AuthUrl::new(auth_url_str)
18        .map_err(|e| Error::generic(format!("Invalid auth URL: {}", e)))?;
19
20    let token_url_str = config
21        .token_url
22        .clone()
23        .ok_or_else(|| Error::generic("OAuth2 token_url must be configured".to_string()))?;
24    let token_url = oauth2::TokenUrl::new(token_url_str)
25        .map_err(|e| Error::generic(format!("Invalid token URL: {}", e)))?;
26
27    Ok(oauth2::basic::BasicClient::new(
28        client_id,
29        Some(client_secret),
30        auth_url,
31        Some(token_url),
32    ))
33}