use openapi_to_rust::{CodeGenerator, GeneratorConfig, SchemaAnalyzer};
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let spec_path = Path::new("../chat-completions-client/chat-completions.json");
let spec_content = std::fs::read_to_string(spec_path)?;
let spec_value: serde_json::Value = serde_json::from_str(&spec_content)?;
let mut analyzer = SchemaAnalyzer::new(spec_value)?;
let mut analysis = analyzer.analyze()?;
let config = GeneratorConfig::default();
let generator = CodeGenerator::new(config);
let result = generator.generate(&mut analysis)?;
if let Some(start) = result.find("pub struct CreateChatCompletionStreamResponse") {
if let Some(end) = result[start..].find("\n}").map(|e| start + e + 2) {
println!("CreateChatCompletionStreamResponse struct:");
println!("{}", &result[start..end]);
}
}
println!("\n\nSearching for Item structs:");
for line in result.lines() {
if line.contains("pub struct")
&& line.contains("Item")
&& line.contains("CreateChatCompletionStreamResponse")
{
println!("Found: {}", line);
}
}
if let Some(start) = result.find("pub struct CreateChatCompletionStreamResponseChoicesItem") {
if let Some(end) = result[start..].find("\n}").map(|e| start + e + 2) {
println!("\nCreateChatCompletionStreamResponseChoicesItem struct:");
println!("{}", &result[start..end]);
}
}
Ok(())
}