cloud_sdk_reqwest/blocking/
basic_config.rs1use core::fmt;
2
3use crate::shared::{BasicCredential, BuildError, HttpsEndpoint, RequestTimeouts, UserAgent};
4
5use super::BlockingBasicClient;
6use super::config::{ClientSettings, configured_raw_client};
7
8pub struct BlockingBasicClientBuilder {
10 endpoint: HttpsEndpoint,
11 credential: BasicCredential,
12 user_agent: UserAgent,
13 timeouts: RequestTimeouts,
14}
15
16impl BlockingBasicClientBuilder {
17 #[must_use]
19 pub const fn new(
20 endpoint: HttpsEndpoint,
21 credential: BasicCredential,
22 user_agent: UserAgent,
23 timeouts: RequestTimeouts,
24 ) -> Self {
25 Self {
26 endpoint,
27 credential,
28 user_agent,
29 timeouts,
30 }
31 }
32
33 pub fn build(self) -> Result<BlockingBasicClient, BuildError> {
35 self.build_inner(true)
36 }
37
38 fn build_inner(self, https_only: bool) -> Result<BlockingBasicClient, BuildError> {
39 if !self.credential.scope().matches_endpoint(&self.endpoint) {
40 return Err(BuildError::CredentialEndpointMismatch);
41 }
42 let settings = ClientSettings {
43 timeouts: self.timeouts,
44 };
45 let client = configured_raw_client(
46 self.endpoint.clone(),
47 &self.user_agent,
48 settings,
49 https_only,
50 )?;
51 Ok(BlockingBasicClient::new(
52 client,
53 self.endpoint,
54 self.credential,
55 !https_only,
56 ))
57 }
58
59 #[cfg(test)]
60 pub(super) fn build_for_loopback(self) -> Result<BlockingBasicClient, BuildError> {
61 self.build_inner(false)
62 }
63}
64
65impl fmt::Debug for BlockingBasicClientBuilder {
66 fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
67 let mut debug = formatter.debug_struct("BlockingBasicClientBuilder");
68 debug
69 .field("endpoint", &"[redacted]")
70 .field("credential", &"[redacted]")
71 .field("user_agent", &self.user_agent)
72 .field("timeouts", &self.timeouts);
73 debug.finish()
74 }
75}