pub struct AsyncHttp;
impl AsyncHttp {
pub async fn get(
#[allow(unused_mut)] mut builders: impl Iterator<Item = nyquest::ClientBuilder>,
path: String,
) -> Result<nyquest::r#async::Response, nyquest::Error> {
cfg_select! {
feature = "multi-server" => {
let mut last_err = nyquest::Error::InvalidUrl;
for builder in builders {
match builder
.build_async()
.await?
.request(nyquest::Request::get(path.clone()))
.await
.and_then(|res| res.with_successful_status())
{
Ok(res) => return Ok(res),
Err(e) => last_err = e,
}
}
Err(last_err)
}
_ => {
let client = unsafe { builders.next().unwrap_unchecked() }
.build_async()
.await?;
client.request(nyquest::Request::get(path)).await
}
}
}
}