Add support for Prinz Karl Mensa

This commit is contained in:
2024-04-24 12:36:10 +02:00
parent 01fb111608
commit bdef10ace4
4 changed files with 20 additions and 9 deletions

View File

@@ -8,7 +8,8 @@ Options:
- `-m`, `--morgenstelle` Show Mensa Morgenstelle - `-m`, `--morgenstelle` Show Mensa Morgenstelle
- `-s`, `--shedhalle` Show Mensa Shedhalle - `-s`, `--shedhalle` Show Mensa Shedhalle
- `-p`, `--plaintext` Format as plain text - `-p`, `--prinzkarl` Show Mensa Prinz Karl
- `--plaintext` Format as plain text
- `-o`, `--oneline` Use very short format (oneline) - `-o`, `--oneline` Use very short format (oneline)
- `-d`, `--days <DAYS>` Offset of days in the future (valid inputs 0-7) [default: 0] - `-d`, `--days <DAYS>` Offset of days in the future (valid inputs 0-7) [default: 0]
- `-v`, `--vegetarian` Show the vegetarian menu - `-v`, `--vegetarian` Show the vegetarian menu

View File

@@ -12,8 +12,12 @@ pub struct Args {
#[arg(short, long, default_value_t = false)] #[arg(short, long, default_value_t = false)]
pub shedhalle: bool, pub shedhalle: bool,
/// Format as plain text /// Show Mensa Prinz Karl
#[arg(short, long, default_value_t = false)] #[arg(short, long, default_value_t = false)]
pub prinzkarl: bool,
/// Format as plain text
#[arg(long, default_value_t = false)]
pub plaintext: bool, pub plaintext: bool,
/// Use very short format (oneline) /// Use very short format (oneline)

View File

@@ -10,17 +10,20 @@ fn main() {
} }
fn exec_arguments(args: &cli::Args) { fn exec_arguments(args: &cli::Args) {
let shedhalle = Mensa::from(MensaName::Shedhalle);
let morgenstelle = Mensa::from(MensaName::Morgenstelle);
if args.morgenstelle { if args.morgenstelle {
if let Ok(resp) = morgenstelle { if let Ok(resp) = Mensa::from(MensaName::Morgenstelle) {
exec_arg_helper(args, &resp); exec_arg_helper(args, &resp);
} }
} }
if args.shedhalle { if args.shedhalle {
if let Ok(resp) = shedhalle { if let Ok(resp) = Mensa::from(MensaName::Shedhalle) {
exec_arg_helper(args, &resp);
}
}
if args.prinzkarl {
if let Ok(resp) = Mensa::from(MensaName::PrinzKarl) {
exec_arg_helper(args, &resp); exec_arg_helper(args, &resp);
} }
} }

View File

@@ -7,6 +7,7 @@ use ureq::{Agent, Error};
pub enum MensaName { pub enum MensaName {
Shedhalle, Shedhalle,
Morgenstelle, Morgenstelle,
PrinzKarl,
} }
pub trait Mealplan { pub trait Mealplan {
@@ -33,8 +34,9 @@ fn get_nth_date(days: u8) -> Option<chrono::DateTime<Local>> {
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
pub struct Mensa { pub struct Mensa {
#[serde(alias = "621")] #[serde(alias = "621")] // Morgenstelle
#[serde(rename = "611")] #[serde(alias = "623")] // Prinz Karl
#[serde(rename = "611")] // Shedhalle
canteen: Canteen, canteen: Canteen,
} }
@@ -48,6 +50,7 @@ impl Mensa {
let canteen_id = match name { let canteen_id = match name {
MensaName::Shedhalle => 611, MensaName::Shedhalle => 611,
MensaName::Morgenstelle => 621, MensaName::Morgenstelle => 621,
MensaName::PrinzKarl => 623,
}; };
let url = let url =