Skip to main content

ip_discovery/http/
providers.rs

1//! Built-in HTTP providers
2
3use super::{parse_cloudflare_trace, HttpProvider};
4use crate::provider::BoxedBlockingProvider;
5#[cfg(feature = "tokio")]
6use crate::provider::BoxedProvider;
7
8/// Cloudflare trace endpoint
9pub fn cloudflare() -> HttpProvider {
10    HttpProvider::new("Cloudflare", "https://1.1.1.1/cdn-cgi/trace")
11        .with_parser(parse_cloudflare_trace)
12}
13
14/// AWS checkip service
15pub fn aws() -> HttpProvider {
16    HttpProvider::new("AWS", "https://checkip.amazonaws.com")
17}
18
19/// List all available HTTP provider names
20pub fn provider_names() -> &'static [&'static str] {
21    &["Cloudflare", "AWS"]
22}
23
24/// Get default blocking HTTP providers
25pub fn default_blocking_providers() -> Vec<BoxedBlockingProvider> {
26    vec![Box::new(cloudflare()), Box::new(aws())]
27}
28
29/// Get default async HTTP providers
30#[cfg(feature = "tokio")]
31pub fn default_providers() -> Vec<BoxedProvider> {
32    vec![Box::new(cloudflare()), Box::new(aws())]
33}