use std::{path::PathBuf, time::Duration};
#[derive(Debug, Clone, Default)]
pub struct HttpOptions {
pub(crate) connect_timeout: Option<Duration>,
pub(crate) timeout: Option<Duration>,
pub(crate) danger_accept_invalid_certs: bool,
pub(crate) root_certificate: Option<PathBuf>,
}
impl HttpOptions {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[must_use]
pub fn connect_timeout(mut self, timeout: Duration) -> Self {
self.connect_timeout = Some(timeout);
self
}
#[must_use]
pub fn timeout(mut self, timeout: Duration) -> Self {
self.timeout = Some(timeout);
self
}
#[must_use]
pub fn danger_accept_invalid_certs(mut self, accept: bool) -> Self {
self.danger_accept_invalid_certs = accept;
self
}
#[must_use]
pub fn add_root_certificate(mut self, path: impl Into<PathBuf>) -> Self {
self.root_certificate = Some(path.into());
self
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_builder_methods() {
let options = HttpOptions::new()
.connect_timeout(Duration::from_secs(10))
.timeout(Duration::from_secs(30))
.danger_accept_invalid_certs(true)
.add_root_certificate("/path/to/cert.pem");
assert_eq!(options.connect_timeout, Some(Duration::from_secs(10)));
assert_eq!(options.timeout, Some(Duration::from_secs(30)));
assert!(options.danger_accept_invalid_certs);
assert_eq!(
options.root_certificate,
Some(PathBuf::from("/path/to/cert.pem"))
);
}
}