use anyhow::Result;
use ip_extract::{ExtractorBuilder, Tag, Tagged};
use std::io::stdout;
fn main() -> Result<()> {
let extractor = ExtractorBuilder::new().build()?;
let input = b"Traffic from 10.0.0.5 to 8.8.8.8 and also 2001:4860:4860::8888";
let mut tagged = Tagged::new(input);
println!("Scanning text...\n");
for range in extractor.find_iter(input) {
let ip_bytes = &input[range.clone()];
let ip_str = std::str::from_utf8(ip_bytes)?;
println!(" Found: {} at {:?}", ip_str, range);
let decoration = format!("[{}]", ip_str); tagged = tagged.tag(
Tag::new(ip_str, ip_str)
.with_range(range)
.with_decoration(decoration),
);
}
println!("\n--- Decorated Output ---");
tagged.write(&mut stdout())?;
println!("\n");
println!("--- JSON Output ---");
tagged.write_json(&mut stdout())?;
println!();
Ok(())
}