browserflare
Rust client for Cloudflare Browser Rendering APIs.
Supports crawling, screenshots, and PDF generation.
Installation
[dependencies]
browserflare = "0.1"
tokio = { version = "1", features = ["full"] }
reqwest = "0.12"
Setup
Set your Cloudflare credentials as environment variables (or in a .env file):
CF_ACCOUNT_ID=your_account_id
CF_API_TOKEN=your_api_token
Usage
Screenshot
use browserflare::{ScreenshotPayload, take_screenshot, save_screenshot};
#[tokio::main]
async fn main() -> browserflare::Result<()> {
let client = reqwest::Client::new();
let payload = ScreenshotPayload {
url: "https://example.com".into(),
..Default::default()
};
let result = take_screenshot(&client, &payload).await?;
save_screenshot("https://example.com", &result.bytes, &result.content_type, None)?;
Ok(())
}
Crawl
use browserflare::{CrawlPayload, start_crawl, poll_until_complete, save_results};
#[tokio::main]
async fn main() -> browserflare::Result<()> {
let client = reqwest::Client::new();
let payload = CrawlPayload {
url: "https://example.com".into(),
limit: Some(10),
formats: Some(vec!["markdown".into()]),
..Default::default()
};
let job_id = start_crawl(&client, &payload).await?;
let result = poll_until_complete(&client, &job_id, 3, None).await?;
save_results(&job_id, &result, Some(&["markdown".into()]))?;
Ok(())
}
PDF
use browserflare::{PdfPayload, generate_pdf, save_pdf};
#[tokio::main]
async fn main() -> browserflare::Result<()> {
let client = reqwest::Client::new();
let payload = PdfPayload {
url: Some("https://example.com".into()),
..Default::default()
};
let result = generate_pdf(&client, &payload).await?;
save_pdf("https://example.com", &result.bytes, None)?;
Ok(())
}
License
MIT