use std::fmt::Debug;
use crate::{HttpUri, HTTPS_SCHEME};
pub trait SecureTransportPolicy: Debug + Send + Sync + 'static {
fn is_secure(uri: &HttpUri) -> bool;
}
#[derive(Debug, Clone)]
pub struct StrictSTP;
impl SecureTransportPolicy for StrictSTP {
#[inline]
fn is_secure(uri: &HttpUri) -> bool {
HTTPS_SCHEME.eq_ignore_ascii_case(uri.scheme_str())
}
}
pub type VoidSTP = ();
impl SecureTransportPolicy for VoidSTP {
#[inline]
fn is_secure(_uri: &HttpUri) -> bool {
true
}
}
#[derive(Debug, Clone)]
pub struct LocalhostExemptingSTP;
impl SecureTransportPolicy for LocalhostExemptingSTP {
#[inline]
fn is_secure(uri: &HttpUri) -> bool {
uri.is_https() || uri.is_localhost()
}
}