openapi-to-rust 0.1.13

Generate strongly-typed Rust structs, HTTP clients, and SSE streaming clients from OpenAPI 3.1 specifications
Documentation
use openapi_to_rust::{CodeGenerator, GeneratorConfig};
use std::path::PathBuf;

fn main() {
    // Example 1: Client with both retry and tracing
    let config = GeneratorConfig {
        spec_path: PathBuf::from("test.json"),
        output_dir: PathBuf::from("test_output"),
        module_name: "test".to_string(),
        enable_async_client: true,
        retry_config: Some(openapi_to_rust::http_config::RetryConfig {
            max_retries: 3,
            initial_delay_ms: 500,
            max_delay_ms: 16000,
        }),
        tracing_enabled: true,
        ..Default::default()
    };

    let generator = CodeGenerator::new(config);
    let client_code = generator.generate_http_client_struct();

    // Parse and format the code
    if let Ok(syntax_tree) = syn::parse2::<syn::File>(client_code.clone()) {
        let formatted = prettyplease::unparse(&syntax_tree);
        println!("=== GENERATED HTTP CLIENT (WITH RETRY + TRACING) ===\n");
        println!("{}", formatted);
    } else {
        println!("Failed to parse generated code");
    }

    // Example 2: Minimal client without middleware
    println!("\n\n=== GENERATED HTTP CLIENT (MINIMAL - NO MIDDLEWARE) ===\n");
    let minimal_config = GeneratorConfig {
        spec_path: PathBuf::from("test.json"),
        output_dir: PathBuf::from("test_output"),
        module_name: "test".to_string(),
        enable_async_client: true,
        retry_config: None,
        tracing_enabled: false,
        ..Default::default()
    };

    let minimal_generator = CodeGenerator::new(minimal_config);
    let minimal_client = minimal_generator.generate_http_client_struct();

    if let Ok(syntax_tree) = syn::parse2::<syn::File>(minimal_client.clone()) {
        let formatted = prettyplease::unparse(&syntax_tree);
        println!("{}", formatted);
    } else {
        println!("Failed to parse generated code");
    }
}