use std::time::Duration;
use hurl_core::types::{BytesPerSec, Count};
use super::header::HeaderVec;
use super::request::{FollowLocation, IpResolve, RequestedHttpVersion};
#[derive(Debug, Clone)]
pub struct ClientOptions {
pub allow_reuse: bool,
pub aws_sigv4: Option<String>,
pub cacert_file: Option<String>,
pub client_cert_file: Option<String>,
pub client_key_file: Option<String>,
pub compressed: bool,
pub connect_timeout: Duration,
pub connects_to: Vec<String>,
pub cookie_input_file: Option<String>,
pub digest: bool,
pub follow_location: FollowLocation,
pub headers: HeaderVec,
pub http_version: RequestedHttpVersion,
pub insecure: bool,
pub ip_resolve: IpResolve,
pub max_filesize: Option<u64>,
pub max_recv_speed: Option<BytesPerSec>,
pub max_redirect: Count,
pub max_send_speed: Option<BytesPerSec>,
pub negotiate: bool,
pub netrc: bool,
pub netrc_file: Option<String>,
pub netrc_optional: bool,
pub no_proxy: Option<String>,
pub ntlm: bool,
pub path_as_is: bool,
pub pinned_pub_key: Option<String>,
pub proxy: Option<String>,
pub resolves: Vec<String>,
pub ssl_no_revoke: bool,
pub timeout: Duration,
pub unix_socket: Option<String>,
pub use_cookie_store: bool,
pub user: Option<String>,
pub user_agent: Option<String>,
pub verbosity: Option<Verbosity>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Verbosity {
LowVerbose,
Verbose,
VeryVerbose,
}
impl Default for ClientOptions {
fn default() -> Self {
ClientOptions {
allow_reuse: true,
aws_sigv4: None,
cacert_file: None,
client_cert_file: None,
client_key_file: None,
compressed: false,
connect_timeout: Duration::from_secs(300),
connects_to: vec![],
cookie_input_file: None,
digest: false,
follow_location: FollowLocation::default(),
headers: HeaderVec::new(),
http_version: RequestedHttpVersion::default(),
insecure: false,
ip_resolve: IpResolve::default(),
max_filesize: None,
max_recv_speed: None,
max_redirect: Count::Finite(50),
max_send_speed: None,
negotiate: false,
netrc: false,
netrc_file: None,
netrc_optional: false,
no_proxy: None,
ntlm: false,
path_as_is: false,
pinned_pub_key: None,
proxy: None,
resolves: vec![],
ssl_no_revoke: false,
timeout: Duration::from_secs(300),
unix_socket: None,
use_cookie_store: true,
user: None,
user_agent: None,
verbosity: None,
}
}
}