Skip to content

Commit a05f856

Browse files
committed
refactor: do not use get_or_init
1 parent 0f58cf5 commit a05f856

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

compiler-cli/src/http.rs

+19-12
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,8 @@ impl gleam_core::io::HttpClient for HttpClient {
2727
let request = request
2828
.try_into()
2929
.expect("Unable to convert HTTP request for use by reqwest library");
30-
let mut response = REQWEST_CLIENT
31-
.get_or_init(|| init_client().expect("Unable to create reqwest client"))
32-
.execute(request)
33-
.await
34-
.map_err(Error::http)?;
30+
let client = init_client().map_err(Error::http)?;
31+
let mut response = client.execute(request).await.map_err(Error::http)?;
3532
let mut builder = Response::builder()
3633
.status(response.status())
3734
.version(response.version());
@@ -44,21 +41,31 @@ impl gleam_core::io::HttpClient for HttpClient {
4441
}
4542
}
4643

47-
fn init_client() -> Result<Client, Error> {
44+
fn init_client() -> Result<&'static Client, Error> {
45+
if let Some(client) = REQWEST_CLIENT.get() {
46+
return Ok(client);
47+
}
48+
4849
let certificate_path = std::env::var("GLEAM_CACERTS_PATH")
4950
.map_err(|_| Error::CannotReadCertificate { path: "".into() })?;
51+
5052
let certificate_bytes =
5153
std::fs::read(&certificate_path).map_err(|_| Error::CannotReadCertificate {
5254
path: certificate_path.clone(),
5355
})?;
56+
5457
let certificate =
5558
Certificate::from_pem(&certificate_bytes).map_err(|_| Error::CannotReadCertificate {
5659
path: certificate_path.clone(),
5760
})?;
58-
Client::builder()
59-
.add_root_certificate(certificate)
60-
.build()
61-
.map_err(|_| Error::CannotReadCertificate {
62-
path: certificate_path,
63-
})
61+
62+
match Client::builder().add_root_certificate(certificate).build() {
63+
Ok(client) => {
64+
let _ = REQWEST_CLIENT.set(client);
65+
Ok(REQWEST_CLIENT.get().expect("This should never fail"))
66+
}
67+
Err(e) => Err(Error::CannotReadCertificate {
68+
path: certificate_path.clone(),
69+
}),
70+
}
6471
}

0 commit comments

Comments
 (0)