1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! # xposedornot
//!
//! Async Rust client for the [XposedOrNot](https://xposedornot.com) data breach API.
//!
//! ## Overview
//!
//! This crate provides a type-safe, async client for querying the XposedOrNot
//! API to check whether email addresses or passwords have been exposed in
//! known data breaches.
//!
//! ## Features
//!
//! - **Email breach check** (free and Plus API)
//! - **Breach analytics** with detailed summaries and metrics
//! - **Breach listing** with optional domain filtering
//! - **Password exposure check** using anonymized Keccak-512 hashing (k-anonymity)
//! - Client-side rate limiting (1 request/second for free API)
//! - Automatic retry with exponential backoff on HTTP 429
//! - Configurable via builder pattern
//!
//! ## Quick Start
//!
//! ```no_run
//! use xposedornot::Client;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), xposedornot::Error> {
//! let client = Client::builder().build()?;
//!
//! // Check if an email has been breached
//! let result = client.check_email("user@example.com").await?;
//! println!("{:?}", result);
//!
//! // Check password exposure (password is hashed locally)
//! let pw_result = client.check_password("password123").await?;
//! println!("Seen {} times", pw_result.search_pass_anon.count);
//!
//! Ok(())
//! }
//! ```
// Re-export primary types at crate root for convenience.
pub use ;
pub use Error;
pub use ;