Initial commit

This commit is contained in:
2022-11-15 16:26:59 +01:00
commit cdb8df60cb
5 changed files with 1186 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target

1077
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

12
Cargo.toml Normal file
View File

@@ -0,0 +1,12 @@
[package]
name = "tuemensa"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
reqwest = { version = "0.11", features = ["json"] }
serde = { version = "1.0.147", features = ["derive"] }
serde_derive = "1.0.147"
tokio = { version = "1", features = ["full"] }

13
src/main.rs Normal file
View File

@@ -0,0 +1,13 @@
mod mensa;
//use crate::mensa::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de")
.await?
.json::<mensa::MensaShedhalle>()
.await?;
println!("{:#?}", resp);
Ok(())
}

83
src/mensa.rs Normal file
View File

@@ -0,0 +1,83 @@
extern crate serde_derive;
use serde::{Serialize, Deserialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct MensaShedhalle {
#[serde(rename = "611")]
the_611: The611,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct The611 {
#[serde(rename = "canteenId")]
canteen_id: String,
canteen: String,
menus: Vec<Menu>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Menu {
id: String,
#[serde(rename = "menuLine")]
menu_line: String,
photo: Photo,
#[serde(rename = "studentPrice")]
student_price: StudentPrice,
#[serde(rename = "guestPrice")]
guest_price: String,
#[serde(rename = "pupilPrice")]
pupil_price: String,
#[serde(rename = "menuDate")]
menu_date: String,
menu: Vec<String>,
meats: Vec<FiltersInclude>,
icons: Vec<FiltersInclude>,
#[serde(rename = "filtersInclude")]
filters_include: Vec<FiltersInclude>,
allergens: Vec<String>,
additives: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Photo {
thumbnail: String,
medium: String,
large: String,
full: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum FiltersInclude {
F,
#[serde(rename = "Vegan")]
FiltersIncludeVegan,
G,
#[serde(rename = "mensaVital")]
MensaVital,
R,
S,
V,
#[serde(rename = "vegan")]
Vegan,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum StudentPrice {
#[serde(rename = "-")]
Empty,
#[serde(rename = "0,95")]
The095,
#[serde(rename = "1,00")]
The100,
#[serde(rename = "2,65")]
The265,
#[serde(rename = "3,10")]
The310,
#[serde(rename = "3,20")]
The320,
#[serde(rename = "3,40")]
The340,
#[serde(rename = "3,50")]
The350,
}