use std::borrow::Cow;
use sentry_types::Dsn;
#[cfg(feature = "client")]
use crate::client_report::Recorder as ClientReportRecorder;
use crate::ClientOptions;
#[derive(Debug)]
#[must_use]
#[non_exhaustive]
pub struct TransportOptions {
pub dsn: Dsn,
pub user_agent: Cow<'static, str>,
pub http_proxy: Option<Cow<'static, str>>,
pub https_proxy: Option<Cow<'static, str>>,
pub accept_invalid_certs: bool,
#[cfg(feature = "client")]
pub client_report_recorder: ClientReportRecorder,
}
impl TransportOptions {
pub fn try_from_client_options(options: &ClientOptions) -> Option<Self> {
let ClientOptions {
dsn,
http_proxy,
https_proxy,
accept_invalid_certs,
user_agent,
..
} = options;
dsn.as_ref().cloned().map(|dsn| Self {
dsn,
user_agent: user_agent.clone(),
http_proxy: http_proxy.clone(),
https_proxy: https_proxy.clone(),
accept_invalid_certs: *accept_invalid_certs,
#[cfg(feature = "client")]
client_report_recorder: ClientReportRecorder::new_no_op(),
})
}
pub(crate) fn into_client_options(self) -> ClientOptions {
let Self {
dsn,
user_agent,
http_proxy,
https_proxy,
accept_invalid_certs,
#[cfg(feature = "client")]
client_report_recorder: _,
} = self;
let dsn = Some(dsn);
ClientOptions {
dsn,
user_agent,
http_proxy,
https_proxy,
accept_invalid_certs,
..Default::default()
}
}
}