use std::time::Duration;
pub async fn check_internet() -> bool {
let client = match reqwest::Client::builder()
.timeout(Duration::from_secs(5))
.build()
{
Ok(c) => c,
Err(_) => return false,
};
client
.get("https://connectivitycheck.gstatic.com/generate_204")
.send()
.await
.is_ok()
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn unreachable_host_returns_false() {
let client = reqwest::Client::builder()
.timeout(Duration::from_millis(200))
.build()
.unwrap();
let result = client
.get("http://192.0.2.1/generate_204") .send()
.await;
assert!(result.is_err());
}
}