use reqwest::{redirect::Policy, tls};
#[derive(Debug)]
pub struct SecurityProfile {
pub save_cookies: bool,
pub send_referer: bool,
pub min_tls_version: Option<tls::Version>,
pub redirect: Policy,
}
impl SecurityProfile {
pub fn strict_1_3() -> Self {
Self {
save_cookies: false,
send_referer: false,
min_tls_version: Some(tls::Version::TLS_1_3),
redirect: Policy::limited(3),
}
}
pub fn strict_1_2() -> Self {
Self {
save_cookies: false,
send_referer: false,
min_tls_version: Some(tls::Version::TLS_1_2),
redirect: Policy::limited(3),
}
}
pub fn permissive() -> Self {
Self {
save_cookies: true,
send_referer: true,
min_tls_version: Some(tls::Version::TLS_1_2),
redirect: Policy::limited(10),
}
}
pub fn test() -> Self {
Self {
save_cookies: false,
send_referer: false,
min_tls_version: None,
redirect: Policy::limited(3),
}
}
pub fn debug() -> Self {
Self {
save_cookies: true,
send_referer: true,
min_tls_version: None,
redirect: Policy::limited(15),
}
}
pub fn redirect(mut self, policy: Policy) -> Self {
self.redirect = policy;
self
}
}
impl Default for SecurityProfile {
fn default() -> Self {
Self::strict_1_2()
}
}
#[derive(Debug)]
pub struct Http2Settings {
pub initial_stream_window_size: u32,
pub initial_connection_window_size: u32,
pub max_frame_size: u32,
pub adaptive_window: bool,
}
impl Default for Http2Settings {
fn default() -> Self {
Self {
initial_stream_window_size: 65_536,
initial_connection_window_size: 1_048_576,
max_frame_size: 16_384,
adaptive_window: true,
}
}
}
impl Http2Settings {
pub fn new(
initial_stream_window_size: u32,
initial_connection_window_size: u32,
max_frame_size: u32,
adaptive_window: bool,
) -> Self {
Self {
initial_stream_window_size,
initial_connection_window_size,
max_frame_size,
adaptive_window,
}
}
}