arti_ureq_builder_and_configs/
arti-ureq-builder-and-configs.rs
1use anyhow::Context;
4use arti_ureq::ureq::tls::RootCerts;
5
6const TEST_URL: &str = "https://check.torproject.org/api/ip";
7
8fn main() -> anyhow::Result<()> {
9 let tor_client_config = arti_ureq::arti_client::config::TorClientConfig::default();
11
12 let tor_client = arti_ureq::arti_client::TorClient::with_runtime(
14 arti_ureq::tor_rtcompat::PreferredRuntime::create().context("Failed to create runtime.")?,
15 )
16 .config(tor_client_config)
17 .create_unbootstrapped()
18 .context("Error creating Tor Client.")?;
19
20 let tls_provider = arti_ureq::get_default_tls_provider();
23
24 let connector_builder =
30 arti_ureq::Connector::<arti_ureq::tor_rtcompat::PreferredRuntime>::builder()
31 .context("Failed to create ConnectorBuilder")?
32 .tor_client(tor_client) .tls_provider(tls_provider); let ureq_tls_config = arti_ureq::ureq::tls::TlsConfig::builder()
37 .root_certs(RootCerts::PlatformVerifier)
38 .provider(tls_provider) .build();
40
41 let ureq_config = arti_ureq::ureq::config::Config::builder()
43 .user_agent("arti-ureq-custom-user-agent")
44 .tls_config(ureq_tls_config)
45 .build();
46
47 let ureq_agent = connector_builder
49 .build()
50 .context("Failed to build Connector")?
51 .agent_with_ureq_config(ureq_config)
52 .context("Failed to create ureq agent.")?;
53
54 let mut request = ureq_agent
56 .get(TEST_URL)
57 .call()
58 .context("Failed to make request.")?;
59
60 let response = request
62 .body_mut()
63 .read_to_string()
64 .context("Failed to read body.")?;
65
66 println!("Response: {}", response);
68
69 Ok(())
70}