capture-rust 0.2.0

Rust SDK for capture.page - Browser automation and screenshot API
Documentation
use capture_rust::Capture;
use std::collections::HashMap;
use std::fs;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key =
        std::env::var("CAPTURE_KEY").expect("CAPTURE_KEY environment variable is required");
    let api_secret =
        std::env::var("CAPTURE_SECRET").expect("CAPTURE_SECRET environment variable is required");

    let capture = Capture::new(api_key, api_secret);

    let mut options = HashMap::new();
    options.insert("full".to_string(), serde_json::Value::Bool(true));
    options.insert(
        "delay".to_string(),
        serde_json::Value::Number(serde_json::Number::from(3)),
    );

    println!("Building image URL...");
    let image_url = capture.build_image_url("https://capture.page/", Some(&options))?;
    println!("Image URL: {image_url}");

    println!("Building PDF URL...");
    let pdf_url = capture.build_pdf_url("https://capture.page/", Some(&options))?;
    println!("PDF URL: {pdf_url}");

    println!("Fetching image...");
    let image_data = capture
        .fetch_image("https://capture.page/", Some(&options))
        .await?;
    fs::write("screenshot.png", image_data)?;
    println!("Screenshot saved as screenshot.png");

    println!("Fetching PDF...");
    let pdf_data = capture
        .fetch_pdf("https://capture.page/", Some(&options))
        .await?;
    fs::write("page.pdf", pdf_data)?;
    println!("PDF saved as page.pdf");

    println!("Fetching content...");
    let content = capture.fetch_content("https://capture.page/", None).await?;
    println!("Content success: {}", content.success);
    println!("HTML length: {}", content.html.len());
    println!("Text content length: {}", content.text_content.len());

    println!("Fetching metadata...");
    let metadata = capture
        .fetch_metadata("https://capture.page/", None)
        .await?;
    println!("Metadata success: {}", metadata.success);
    println!(
        "Metadata keys: {:?}",
        metadata.metadata.keys().collect::<Vec<_>>()
    );

    Ok(())
}