screenshotbase_sdk/lib.rs
1//! screenshotbase
2//!
3//! A Rust client for the `screenshotbase.com` API. It provides:
4//! - API status retrieval
5//! - Website screenshot capture to image/PDF bytes
6//!
7//! The API reference: https://screenshotbase.com/docs/
8//!
9//! Authentication is performed via the `X-API-Key` header and also appended
10//! as a query parameter `api_key` for compatibility.
11//!
12//! By default this crate exposes async APIs via `reqwest`. Enable the `blocking`
13//! feature to also use a synchronous client.
14//!
15//! Basic async usage:
16//!
17//! ```no_run
18//! # #[tokio::main]
19//! # async fn main() -> Result<(), Box<dyn std::error::Error>> {
20//! let api_key = std::env::var("SCREENSHOTBASE_API_KEY")?;
21//! let client = screenshotbase_sdk::client::ScreenshotbaseClient::new(api_key)?;
22//!
23//! // Status
24//! let status = client.get_status().await?;
25//! println!("Plan: {:?}", status.plan);
26//!
27//! // Take a screenshot
28//! let result = client.take_screenshot(
29//! "https://example.com",
30//! screenshotbase_sdk::types::RenderOptions {
31//! format: Some(screenshotbase_sdk::types::ImageFormat::Png),
32//! full_page: Some(true),
33//! width: Some(1280),
34//! height: Some(800),
35//! ..Default::default()
36//! }
37//! ).await?;
38//! println!("Content-Type: {:?}", result.content_type);
39//! println!("Received {} bytes", result.bytes.len());
40//! # Ok(()) }
41//! ```
42//!
43//! Blocking usage (enable `blocking` feature):
44//!
45//! ```no_run
46//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
47//! # #[cfg(feature = "blocking")]
48//! {
49//! let api_key = std::env::var("SCREENSHOTBASE_API_KEY")?;
50//! let client = screenshotbase_sdk::client::ScreenshotbaseBlockingClient::new(api_key)?;
51//! let status = client.get_status()?;
52//! println!("Plan: {:?}", status.plan);
53//! let _bytes = client.take_screenshot(
54//! "https://example.com",
55//! screenshotbase_sdk::types::RenderOptions::default()
56//! )?;
57//! }
58//! # Ok(()) }
59//! ```
60
61pub mod client;
62pub mod error;
63pub mod types;
64