📦 Turbo87 / united-flarmnet

📄 flarmnet.rs · 29 lines
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,
    }
}