avancements

This commit is contained in:
Raphaël 2023-12-24 14:35:34 +01:00
parent 6119b798a9
commit 96d645ca75
3 changed files with 135144 additions and 8 deletions

View file

@ -6,6 +6,7 @@ edition = "2021"
[dependencies]
anyhow = "1.0.76"
bytes = "1.5.0"
paste = "1.0.14"
quick-xml = { version = "0.31.0", features = ["serde", "serialize"] }
reqwest = "0.11.23"
serde = { version = "1.0.193", features = ["derive"] }

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
// https://api.opendata.onisep.fr/downloads/5fe0808a2da6f/5fe0808a2da6f.zip
use paste::paste;
use serde::{Deserialize, Deserializer};
use std::{
io::{BufReader, Cursor},
@ -7,8 +8,9 @@ use std::{
};
macro_rules! unwrap_vec {
($fname:ident, $name:ident, $t:ty) => {
fn $fname<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Vec<$t>, D::Error> {
($name:ident, $t:ty) => {
paste! {
fn [<unwrap_ $name s>]<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Vec<$t>, D::Error> {
#[derive(Deserialize)]
struct List {
#[serde(default)]
@ -16,6 +18,7 @@ macro_rules! unwrap_vec {
}
Ok(List::deserialize(deserializer)?.$name)
}
}
};
}
@ -25,7 +28,7 @@ pub struct Metiers {
metiers: Vec<Metier>,
}
unwrap_vec!(unwrap_synonymes, synonyme, String);
unwrap_vec!(synonyme, String);
#[derive(Deserialize, Debug)]
pub struct Metier {
@ -33,6 +36,7 @@ pub struct Metier {
libelle_masculin: String,
#[serde(deserialize_with = "unwrap_synonymes")]
synonymes: Vec<String>,
acces_metier: String,
}
pub async fn download_metier() -> anyhow::Result<Metiers> {