use std::collections::BTreeMap;
#[derive(Debug, Default, Clone)]
pub struct UrlParamsBuilder {
pub param_map: BTreeMap<String, String>,
}
impl UrlParamsBuilder {
pub fn new() -> Self {
Self { param_map: BTreeMap::new() }
}
pub fn put_url(&mut self, name: &str, value: &str) {
self.param_map.insert(name.to_string(), value.to_string());
}
pub fn build_query_string(&self) -> String {
if self.param_map.is_empty() {
String::new()
} else {
let mut kvs: Vec<_> = self.param_map.iter().collect();
kvs.sort_by(|a, b| a.0.cmp(b.0));
kvs.iter().map(|(k, v)| format!("{}={}", k, v)).collect::<Vec<_>>().join("&")
}
}
}