use dragonfly_client_request::{GetRequest, PreheatRequest, Proxy, Request};
use futures::TryStreamExt;
use tokio::io::AsyncWriteExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = std::env::args().collect();
if args.len() != 3 {
eprintln!("usage: {} <scheduler-endpoint> <url>", args[0]);
std::process::exit(1);
}
let proxy = Proxy::builder()
.scheduler_endpoint(args[1].clone())
.build()
.await?;
proxy
.preheat(&PreheatRequest {
url: args[2].clone(),
replicas: 3,
..Default::default()
})
.await?;
let response = proxy
.get(&GetRequest {
url: args[2].clone(),
replicas: 3,
..Default::default()
})
.await?;
let mut body = response.body.ok_or("missing response body")?;
let mut stdout = tokio::io::stdout();
while let Some(chunk) = body.try_next().await? {
stdout.write_all(&chunk).await?;
}
stdout.flush().await?;
Ok(())
}