coman/cli/
request_data.rs

1use 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}