use std::fmt;
use thiserror::Error;
use crate::{core::messages::HttpResponse, global, internal::wit};
#[derive(Error, Debug, Clone)]
pub struct HttpError(pub String);
impl fmt::Display for HttpError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "HTTP error: {}", self.0)
}
}
pub async fn get(url: impl AsRef<str>) -> Result<Vec<u8>, HttpError> {
let url = url.as_ref();
wit::server_http::get(url);
let response = global::wait_for_runtime_message({
let url = url.to_owned();
move |message: &HttpResponse| message.url == url
})
.await;
match response.error {
Some(error) => Err(HttpError(error)),
None => Ok(response.body),
}
}