1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use std::collections::HashMap;

pub fn make_params(params: Option<&HashMap<&str, String>>) -> String {
	if params.is_none() {
		return String::new();
	}
	let params = params.unwrap();
	let mut res = String::from("?");
	let kvs = params
		.iter()
		.map(|(key, val)| format!("{}={}", key.to_lowercase(), val))
		.collect::<Vec<String>>();

	if kvs.len() == 0 {
		return String::new();
	}

	res.push_str(&kvs.join("&"));
	return res;
}

#[macro_export]
macro_rules! with_param {
	($param:ident, $_type: ty) => {
		pub fn $param(mut self, $param: $_type) -> Self {
			self.params.insert(stringify!($param), $param.to_string());
			self
		}
	};
}