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
29use flarmnet::xcsoar::DecodedFile;
use reqwest_middleware::ClientWithMiddleware;
#[instrument(skip(client))]
pub async fn get_flarmnet_file(client: &ClientWithMiddleware) -> anyhow::Result<flarmnet::File> {
info!("Downloading FlarmNet file…");
let response = client
.get("https://www.flarmnet.org/files/data.fln")
.send()
.await?;
let response = response.error_for_status()?;
let content = response.text().await?;
let decoded_file = flarmnet::xcsoar::decode_file(&content)?;
Ok(to_file(decoded_file))
}
fn to_file(decoded: DecodedFile) -> flarmnet::File {
let records = decoded
.records
.into_iter()
.filter_map(|res| res.ok())
.collect();
flarmnet::File {
version: decoded.version,
records,
}
}