use crate::{constants, error::Result, voice::Voice};
pub fn get_voices_list() -> Result<Vec<Voice>> {
let crypto = std::sync::Arc::new(rustls::crypto::aws_lc_rs::default_provider());
let tls_config = ureq::tls::TlsConfig::builder()
.provider(ureq::tls::TlsProvider::Rustls)
.unversioned_rustls_crypto_provider(crypto)
.root_certs(ureq::tls::RootCerts::PlatformVerifier)
.build();
let config = ureq::config::Config::builder()
.tls_config(tls_config)
.build();
Ok(config
.new_agent()
.get(constants::VOICE_LIST_URL)
.header("User-Agent", constants::USER_AGENT)
.call()?
.body_mut()
.read_json()?)
}
#[cfg(feature = "proxy")]
#[cfg_attr(docsrs, doc(cfg(all(feature = "blocking", feature = "proxy"))))]
pub fn get_voices_list_proxy(proxy: &str) -> Result<Vec<Voice>> {
let crypto = std::sync::Arc::new(rustls::crypto::aws_lc_rs::default_provider());
let tls_config = ureq::tls::TlsConfig::builder()
.provider(ureq::tls::TlsProvider::Rustls)
.unversioned_rustls_crypto_provider(crypto)
.root_certs(ureq::tls::RootCerts::PlatformVerifier)
.build();
let proxy = ureq::Proxy::new(proxy)?;
let config = ureq::config::Config::builder()
.tls_config(tls_config)
.proxy(Some(proxy))
.build();
Ok(config
.new_agent()
.get(constants::VOICE_LIST_URL)
.header("User-Agent", constants::USER_AGENT)
.call()?
.body_mut()
.read_json()?)
}