(&self, mod_list: &str)
| 279 | |
| 280 | pub async fn mod_usage_servers(&self, mod_id: &str) -> Result<Vec<ModUsageServer>> { |
| 281 | let mut servers = self |
| 282 | .directory |
| 283 | .list(&ListServersQuery::default(), now_unix_millis()) |
| 284 | .await? |
| 285 | .into_iter() |
| 286 | .filter(|server| { |
| 287 | split_server_mods(&server.mod_list) |
| 288 | .iter() |
| 289 | .any(|candidate| candidate == mod_id) |
| 290 | }) |
| 291 | .map(|server| ModUsageServer { |
| 292 | server_id: server.server_id, |
| 293 | hostname: server.hostname, |
| 294 | gametype: server.gametype, |
| 295 | players: server.numplayers, |
| 296 | max_players: server.maxplayers, |
| 297 | password: server.password, |
| 298 | }) |
| 299 | .collect::<Vec<_>>(); |
| 300 | |
| 301 | servers.sort_by(|lhs, rhs| { |
| 302 | rhs.players |
| 303 | .cmp(&lhs.players) |
| 304 | .then_with(|| lhs.hostname.cmp(&rhs.hostname)) |
| 305 | }); |
| 306 | Ok(servers) |
| 307 | } |
| 308 | |
| 309 | pub fn metadata(&self) -> ServiceMetadata { |
| 310 | ServiceMetadata { |
| 311 | service_name: SERVICE_NAME.to_string(), |
no test coverage detected