pub struct ProxyCapabilities {Show 13 fields
pub supports_https_connect: bool,
pub supports_socks5_udp: bool,
pub supports_http3_tunnel: bool,
pub geo_country: Option<String>,
pub geo_confidence: Option<f32>,
pub is_cdn_edge: bool,
pub cdn_provider: Option<String>,
pub tls_profile: Option<String>,
pub ip_class: IpClass,
pub target_compatibility: TargetVendorCompatibility,
pub asn: Option<u32>,
pub city: Option<String>,
pub postal_code: Option<String>,
}Expand description
Protocol-level capabilities advertised by a proxy endpoint.
These flags are set when the proxy is registered and consulted during
capability-aware selection (see crate::manager::ProxyManager::acquire_with_capabilities).
§Example
use stygian_proxy::types::ProxyCapabilities;
let caps = ProxyCapabilities::default();
assert!(!caps.supports_https_connect);
assert!(!caps.supports_socks5_udp);
assert!(!caps.supports_http3_tunnel);
assert_eq!(caps.ip_class, stygian_proxy::types::IpClass::Unknown);
assert!(caps.target_compatibility.is_empty());Fields§
§supports_https_connect: boolProxy supports the CONNECT method for HTTPS tunnelling.
supports_socks5_udp: boolProxy supports SOCKS5 with UDP relay (for UDP-based transports).
supports_http3_tunnel: boolProxy supports HTTP/3 (QUIC) tunnelling — future-compatible flag.
geo_country: Option<String>Optional ISO-3166-1 alpha-2 country code for the proxy egress location.
geo_confidence: Option<f32>Confidence score [0.0, 1.0] for the geo-location data.
None means the provider did not supply confidence metadata.
is_cdn_edge: booltrue when this proxy routes through a CDN edge node rather than a
traditional SOCKS/HTTP proxy server.
cdn_provider: Option<String>CDN provider name when is_cdn_edge is true.
Advisory — used for monitoring and routing hints.
Examples: "cloudflare", "cloudfront", "azure-front-door".
tls_profile: Option<String>TLS fingerprint profile this proxy presents toward the upstream target.
Advisory identifier such as "chrome-131", "firefox-120", or
"curl". Use with CapabilityRequirement::require_tls_profile to
select proxies by their TLS stack identity. None means unknown.
ip_class: IpClassIP trust class for the proxy egress.
Defaults to IpClass::Unknown so legacy serialised proxies
deserialize cleanly. See the module-level docs for the four-tier
trust hierarchy and routing rationale.
target_compatibility: TargetVendorCompatibilityPer-vendor trust tier overrides.
Free-list fetchers populate this with
TargetVendorCompatibility::default_blocked so callers cannot
accidentally route premium traffic through a public free-list
pool. Operator-curated pools typically leave this empty and rely
on per-vendor metadata from the provider.
asn: Option<u32>Autonomous System Number (ASN) of the proxy’s egress IP.
Cited by the 2026 guide (L2837) as a “filter by ASN” feature
offered by commercial providers (e.g. Infatica). None means
the provider did not tag the proxy’s AS; an exact-match
CapabilityRequirement::require_asn filter is the only way to
surface it. See the well_known module for the
Cloudflare / Akamai / Fastly / CloudFront ASN constants.
city: Option<String>City of the proxy’s egress IP (operator-declared, no validation beyond UTF-8).
Format follows the operator’s convention; the 2026 guide does
not mandate a particular scheme. None means the city is
unknown.
postal_code: Option<String>Postal / ZIP code of the proxy’s egress IP (operator-declared, no format enforced).
The 2026 guide cites ZIP-level filtering as a commercial
provider capability (L2837); the format is per-country (e.g.
"94110" for US ZIP, "SW1A 1AA" for UK). None means the
postal code is unknown.
Implementations§
Source§impl ProxyCapabilities
impl ProxyCapabilities
Sourcepub fn satisfies(&self, req: &CapabilityRequirement) -> bool
pub fn satisfies(&self, req: &CapabilityRequirement) -> bool
Returns true if every required flag in req is satisfied by self.
§Example
use stygian_proxy::types::{ProxyCapabilities, CapabilityRequirement};
let caps = ProxyCapabilities { supports_https_connect: true, ..Default::default() };
let req = CapabilityRequirement { require_https_connect: true, ..Default::default() };
assert!(caps.satisfies(&req));
let req2 = CapabilityRequirement { require_socks5_udp: true, ..Default::default() };
assert!(!caps.satisfies(&req2));Trait Implementations§
Source§impl Clone for ProxyCapabilities
impl Clone for ProxyCapabilities
Source§fn clone(&self) -> ProxyCapabilities
fn clone(&self) -> ProxyCapabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more