Add reqwest and ureq feature
Available features: android -> reqwest small -> ureq
This commit is contained in:
1073
Cargo.lock
generated
1073
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
18
Cargo.toml
18
Cargo.toml
@@ -20,7 +20,18 @@ clap = { version = "4.5.23", features = ["derive"] }
|
|||||||
prettytable = "0.10.0"
|
prettytable = "0.10.0"
|
||||||
serde = { version = "1.0.217", features = ["derive"] }
|
serde = { version = "1.0.217", features = ["derive"] }
|
||||||
serde_derive = "1.0.217"
|
serde_derive = "1.0.217"
|
||||||
ureq = { version = "*", features = ["json", "tls"] }
|
anyhow = "=1.0.95"
|
||||||
|
|
||||||
|
[dependencies.ureq]
|
||||||
|
version = "*"
|
||||||
|
features = ["default", "json", "tls"]
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[dependencies.reqwest]
|
||||||
|
version = "0.12.11"
|
||||||
|
features = ["blocking", "json", "rustls-tls"]
|
||||||
|
default-features = false
|
||||||
|
optional = true
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "tuemensa_lib"
|
name = "tuemensa_lib"
|
||||||
@@ -29,3 +40,8 @@ path = "src/lib.rs"
|
|||||||
[[bin]]
|
[[bin]]
|
||||||
name = "tuemensa"
|
name = "tuemensa"
|
||||||
path = "src/main.rs"
|
path = "src/main.rs"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["android"]
|
||||||
|
android = ["reqwest"]
|
||||||
|
small = []
|
||||||
|
@@ -1 +1 @@
|
|||||||
mod mensa;
|
pub mod mensa;
|
||||||
|
30
src/mensa.rs
30
src/mensa.rs
@@ -2,7 +2,8 @@ extern crate serde_derive;
|
|||||||
use chrono::{Datelike, Local};
|
use chrono::{Datelike, Local};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use ureq::{Agent, Error};
|
#[cfg(feature = "ureq")]
|
||||||
|
use ureq::Agent;
|
||||||
|
|
||||||
pub enum MensaName {
|
pub enum MensaName {
|
||||||
Wilhelmstrasse,
|
Wilhelmstrasse,
|
||||||
@@ -41,12 +42,8 @@ pub struct Mensa {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Mensa {
|
impl Mensa {
|
||||||
pub fn from(name: MensaName) -> Result<Mensa, Error> {
|
#[cfg(feature = "small")]
|
||||||
let agent: Agent = ureq::AgentBuilder::new()
|
pub fn from(name: MensaName) -> anyhow::Result<Mensa> {
|
||||||
.timeout_read(Duration::from_secs(5))
|
|
||||||
.timeout_write(Duration::from_secs(5))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
let canteen_id = match name {
|
let canteen_id = match name {
|
||||||
MensaName::Wilhelmstrasse => 611,
|
MensaName::Wilhelmstrasse => 611,
|
||||||
MensaName::Morgenstelle => 621,
|
MensaName::Morgenstelle => 621,
|
||||||
@@ -56,9 +53,28 @@ impl Mensa {
|
|||||||
let url =
|
let url =
|
||||||
format!("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/{canteen_id}?lang=de");
|
format!("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/{canteen_id}?lang=de");
|
||||||
|
|
||||||
|
let agent: Agent = ureq::AgentBuilder::new()
|
||||||
|
.timeout_read(Duration::from_secs(5))
|
||||||
|
.timeout_write(Duration::from_secs(5))
|
||||||
|
.build();
|
||||||
Ok(agent.get(&url).call()?.into_json::<Mensa>()?)
|
Ok(agent.get(&url).call()?.into_json::<Mensa>()?)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "android")]
|
||||||
|
pub fn from(name: MensaName) -> anyhow::Result<Mensa> {
|
||||||
|
let canteen_id = match name {
|
||||||
|
MensaName::Wilhelmstrasse => 611,
|
||||||
|
MensaName::Morgenstelle => 621,
|
||||||
|
MensaName::PrinzKarl => 623,
|
||||||
|
};
|
||||||
|
|
||||||
|
let url =
|
||||||
|
format!("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/{canteen_id}?lang=de");
|
||||||
|
|
||||||
|
let client = reqwest::blocking::Client::new();
|
||||||
|
Ok(client.get(url).send()?.json()?)
|
||||||
|
}
|
||||||
|
|
||||||
fn _print(&self) {
|
fn _print(&self) {
|
||||||
println!("{:#?}", self);
|
println!("{:#?}", self);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user