coman/cli/
request_data.rs1use clap::Args;
2
3#[derive(Args, Clone, Debug)]
4pub struct RequestData {
5 pub url: String,
6
7 #[clap(
8 short = 'H',
9 long = "header",
10 value_parser = RequestData::parse_header,
11 value_name = "KEY:VALUE",
12 num_args = 1..,
13 required = false
14 )]
15 pub headers: Vec<(String, String)>,
16
17 #[clap(short, long, default_value = "", required = false)]
18 pub body: String,
19}
20
21impl RequestData {
22 pub fn parse_header(s: &str) -> Result<(String, String), String> {
23 let parts: Vec<&str> = s.splitn(2, ':').collect();
24 if parts.len() != 2 {
25 return Err(format!("Invalid header format: '{}'. Use KEY:VALUE", s));
26 }
27 Ok((parts[0].trim().to_string(), parts[1].trim().to_string()))
28 }
29}