use std::collections::HashMap;
pub fn populate_metadata(
code: u16,
description: &str,
request_metadata: Option<HashMap<&str, &str>>,
) -> HashMap<String, String> {
let mut metadata = HashMap::new();
metadata.insert("description".to_string(), description.to_string());
metadata.insert("is_error".to_string(), (code >= 400).to_string());
metadata.insert(
"status_family".to_string(),
match code {
100..=199 => "Informational",
200..=299 => "Success",
300..=399 => "Redirection",
400..=499 => "Client Error",
500..=599 => "Server Error",
600..=699 => "Service Error",
700..=799 => "Crawler Error",
900..=999 => "Local API Error",
_ => "Unknown",
}
.to_string(),
);
if let Some(req_meta) = request_metadata {
for (key, value) in req_meta {
metadata.insert((*key).to_string(), (*value).to_string());
}
}
metadata
}