pub struct TargetVendorCompatibility { /* private fields */ }Expand description
Mapping from anti-bot VendorId to the proxy’s declared
TrustTier against that vendor.
default_blocked() returns a populated map with every known vendor
marked as TrustTier::Blocked, which is the safe choice for
free-list ingest: callers must explicitly opt-in to trusting a
free-list pool for premium vendors.
Implementations§
Source§impl TargetVendorCompatibility
impl TargetVendorCompatibility
Sourcepub fn new() -> Self
pub fn new() -> Self
Empty compatibility — every vendor falls back to
TrustTier::Blocked at the requirement gate.
§Example
use stygian_proxy::types::TargetVendorCompatibility;
let c = TargetVendorCompatibility::default();
assert!(c.is_empty());
assert_eq!(c.get(stygian_proxy::types::VendorId::DataDome), None);Sourcepub fn default_blocked() -> Self
pub fn default_blocked() -> Self
Returns a compatibility map with every known vendor marked
TrustTier::Blocked.
Used by free-list fetchers to fail-secure on ingest: a free-list
proxy cannot satisfy a target_vendor capability requirement
unless the operator explicitly upgrades the tier.
§Example
use stygian_proxy::types::{TargetVendorCompatibility, TrustTier, VendorId};
let c = TargetVendorCompatibility::default_blocked();
assert_eq!(c.get(VendorId::DataDome), Some(TrustTier::Blocked));
assert_eq!(c.get(VendorId::Cloudflare), Some(TrustTier::Blocked));
assert!(!c.is_empty());Sourcepub fn get(&self, vendor: VendorId) -> Option<TrustTier>
pub fn get(&self, vendor: VendorId) -> Option<TrustTier>
Returns the declared tier for vendor, or None when unknown.
§Example
use stygian_proxy::types::{TargetVendorCompatibility, TrustTier, VendorId};
let c = TargetVendorCompatibility::default().set(VendorId::Akamai, TrustTier::Preferred);
assert_eq!(c.get(VendorId::Akamai), Some(TrustTier::Preferred));
assert_eq!(c.get(VendorId::DataDome), None);Sourcepub fn set(self, vendor: VendorId, tier: TrustTier) -> Self
pub fn set(self, vendor: VendorId, tier: TrustTier) -> Self
Set the declared tier for vendor, replacing any prior value.
Builder-style: takes self by value and returns the updated
TargetVendorCompatibility so calls can be chained.
§Example
use stygian_proxy::types::{TargetVendorCompatibility, TrustTier, VendorId};
let c = TargetVendorCompatibility::default()
.set(VendorId::Cloudflare, TrustTier::Acceptable)
.set(VendorId::Akamai, TrustTier::Preferred);
assert_eq!(c.get(VendorId::Cloudflare), Some(TrustTier::Acceptable));
assert_eq!(c.get(VendorId::Akamai), Some(TrustTier::Preferred));Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true when no vendor tiers have been declared.
§Example
use stygian_proxy::types::{TargetVendorCompatibility, TrustTier, VendorId};
assert!(TargetVendorCompatibility::default().is_empty());
assert!(!TargetVendorCompatibility::default_blocked().is_empty());
let c = TargetVendorCompatibility::default().set(VendorId::Cloudflare, TrustTier::Preferred);
assert!(!c.is_empty());Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the number of declared vendor tiers.
§Example
use stygian_proxy::types::{TargetVendorCompatibility, TrustTier, VendorId};
let c = TargetVendorCompatibility::default();
assert_eq!(c.len(), 0);
let c = TargetVendorCompatibility::default().set(VendorId::Cloudflare, TrustTier::Preferred);
assert_eq!(c.len(), 1);Sourcepub fn iter(&self) -> impl Iterator<Item = (VendorId, TrustTier)> + '_
pub fn iter(&self) -> impl Iterator<Item = (VendorId, TrustTier)> + '_
Iterate (vendor, tier) pairs in deterministic (sorted) order.
§Example
use stygian_proxy::types::{TargetVendorCompatibility, TrustTier, VendorId};
let c = TargetVendorCompatibility::default()
.set(VendorId::DataDome, TrustTier::Preferred)
.set(VendorId::Akamai, TrustTier::Acceptable);
let entries: Vec<_> = c.iter().collect();
// Sorted by VendorId discriminant order (Akamai < DataDome).
assert_eq!(entries.first().map(|(v, _)| *v), Some(VendorId::Akamai));
assert_eq!(entries.get(1).map(|(v, _)| *v), Some(VendorId::DataDome));Trait Implementations§
Source§impl Clone for TargetVendorCompatibility
impl Clone for TargetVendorCompatibility
Source§fn clone(&self) -> TargetVendorCompatibility
fn clone(&self) -> TargetVendorCompatibility
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TargetVendorCompatibility
impl Debug for TargetVendorCompatibility
Source§impl Default for TargetVendorCompatibility
impl Default for TargetVendorCompatibility
Source§fn default() -> TargetVendorCompatibility
fn default() -> TargetVendorCompatibility
Source§impl<'de> Deserialize<'de> for TargetVendorCompatibility
impl<'de> Deserialize<'de> for TargetVendorCompatibility
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for TargetVendorCompatibility
impl StructuralPartialEq for TargetVendorCompatibility
Auto Trait Implementations§
impl Freeze for TargetVendorCompatibility
impl RefUnwindSafe for TargetVendorCompatibility
impl Send for TargetVendorCompatibility
impl Sync for TargetVendorCompatibility
impl Unpin for TargetVendorCompatibility
impl UnsafeUnpin for TargetVendorCompatibility
impl UnwindSafe for TargetVendorCompatibility
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.