Skip to main content

Rust Integration

Using reqwest and serde.

use serde::Deserialize;
use reqwest::header::HeaderMap;

#[derive(Deserialize)]
struct Confidence {
confidence_score: u8,
status: String,
alias_status: String,
canonical_email: Option<String>,
is_role_based: bool,
}

#[derive(Deserialize)]
struct Validations {
is_disposable: bool,
}

#[derive(Deserialize)]
struct ApiResponse {
confidence: Confidence,
validations: Validations,
}

async fn validate_email(email: &str, api_key: &str) -> Result<bool, reqwest::Error> {
let client = reqwest::Client::new();
let url = format!("https://api.checkemail.dev/validate?email={}", email);

let mut headers = HeaderMap::new();
headers.insert("x-api-key", api_key.parse().unwrap());

let res = client.get(url)
.headers(headers)
.send()
.await?
.json::<ApiResponse>()
.await?;

let confidence = res.confidence;
let validations = res.validations;

if confidence.status == "DISPOSABLE" || validations.is_disposable {
return Ok(false);
}

Ok(confidence.status == "LIKELY")
}