use std::io::{BufWriter, Write};
use surfing::JSONParser;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut parser = JSONParser::new();
let chunks = [
"Server starting...\n",
"Loading config {\"name\":\"streaming-server\",",
"\"version\":\"1.0.0\",\"settings\":{",
"\"timeout\":5000,\"retry\":true}}",
"\nInitialization complete.",
"\nReceived request: {\"method\":\"GET\",",
"\"path\":\"/api/data\"}",
];
let mut buffer = Vec::new();
println!("Processing {} chunks of streaming data...", chunks.len());
{
let mut writer = BufWriter::new(&mut buffer);
for (i, chunk) in chunks.iter().enumerate() {
println!("Chunk {}: {}", i + 1, chunk.trim());
parser.extract_json_from_stream(&mut writer, chunk)?;
}
writer.flush()?;
}
let json_only = String::from_utf8(buffer)?;
println!("\nExtracted JSON from stream:");
println!("{}", json_only);
Ok(())
}