Skip to main content

client/
client.rs

1use std::process;
2use nwep::{Keypair, client::ClientBuilder, Url};
3
4fn main() {
5    let url = std::env::args().nth(1).unwrap_or_else(|| {
6        eprintln!("usage: client <web://url/path>");
7        process::exit(1);
8    });
9
10    nwep::init().unwrap_or_else(|e| {
11        eprintln!("init: {e}");
12        process::exit(1);
13    });
14
15    nwep::log::set_level(nwep::log::LogLevel::Warn);
16    nwep::log::set_stderr(true);
17
18    let parsed = Url::parse(&url).unwrap_or_else(|e| {
19        eprintln!("parse url: {e}");
20        process::exit(1);
21    });
22    let path = if parsed.path.is_empty() { "/".to_string() } else { parsed.path.clone() };
23
24    let keypair = Keypair::generate().unwrap_or_else(|e| {
25        eprintln!("keygen: {e}");
26        process::exit(1);
27    });
28
29    let client = ClientBuilder::new()
30        .connect(keypair, &url)
31        .unwrap_or_else(|e| {
32            eprintln!("connect: {e}");
33            process::exit(1);
34        });
35
36    let resp = client.get(&path).unwrap_or_else(|e| {
37        eprintln!("get: {e}");
38        process::exit(1);
39    });
40
41    println!("{}", resp.status);
42    println!("{}", String::from_utf8_lossy(&resp.body));
43
44    client.close();
45}