#![feature(async_fn_in_trait)]
endpoint_error!(http_types::Error);
use acril::prelude::http::*;
use std::fmt::Display;
use tracing::*;
#[derive(ClientEndpoint)]
#[endpoint(Post(display) "/say_hello" in HttpClient -> String)]
struct SayToServer(String);
impl Display for SayToServer {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
}
}
#[async_std::main]
async fn main() {
tracing_subscriber::fmt().init();
info!("Starting helloer program.");
if let Err(e) = async move {
let client = HttpClient::new().with_base_url(Url::parse("http://localhost:3000")?);
info!("Trying to say hello to server...");
let output = client
.call(SayToServer(String::from("Hello, server!")))
.await?;
info!(%output, "Successfully said hello to server!");
Ok::<_, http_types::Error>(())
}
.await
{
error!("{e}");
}
}