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"
|
||||
serde = { version = "1.0.217", features = ["derive"] }
|
||||
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]
|
||||
name = "tuemensa_lib"
|
||||
@@ -29,3 +40,8 @@ path = "src/lib.rs"
|
||||
[[bin]]
|
||||
name = "tuemensa"
|
||||
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 serde::{Deserialize, Serialize};
|
||||
use std::time::Duration;
|
||||
use ureq::{Agent, Error};
|
||||
#[cfg(feature = "ureq")]
|
||||
use ureq::Agent;
|
||||
|
||||
pub enum MensaName {
|
||||
Wilhelmstrasse,
|
||||
@@ -41,12 +42,8 @@ pub struct Mensa {
|
||||
}
|
||||
|
||||
impl Mensa {
|
||||
pub fn from(name: MensaName) -> Result<Mensa, Error> {
|
||||
let agent: Agent = ureq::AgentBuilder::new()
|
||||
.timeout_read(Duration::from_secs(5))
|
||||
.timeout_write(Duration::from_secs(5))
|
||||
.build();
|
||||
|
||||
#[cfg(feature = "small")]
|
||||
pub fn from(name: MensaName) -> anyhow::Result<Mensa> {
|
||||
let canteen_id = match name {
|
||||
MensaName::Wilhelmstrasse => 611,
|
||||
MensaName::Morgenstelle => 621,
|
||||
@@ -56,9 +53,28 @@ impl Mensa {
|
||||
let url =
|
||||
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>()?)
|
||||
}
|
||||
|
||||
#[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) {
|
||||
println!("{:#?}", self);
|
||||
}
|
||||
|
Reference in New Issue
Block a user