Remove reqwest and tokio dependency
Use ureq http client instead
This commit is contained in:
831
Cargo.lock
generated
831
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,6 @@ edition = "2021"
|
|||||||
chrono = "0.4.23"
|
chrono = "0.4.23"
|
||||||
clap = { version = "4.0.26", features = ["derive"] }
|
clap = { version = "4.0.26", features = ["derive"] }
|
||||||
prettytable = "0.10.0"
|
prettytable = "0.10.0"
|
||||||
reqwest = { version = "0.11", features = ["json"] }
|
|
||||||
serde = { version = "1.0.147", features = ["derive"] }
|
serde = { version = "1.0.147", features = ["derive"] }
|
||||||
serde_derive = "1.0.147"
|
serde_derive = "1.0.147"
|
||||||
tokio = { version = "1", features = ["full"] }
|
ureq = { version = "*", features = ["json", "tls", ]}
|
||||||
|
13
src/main.rs
13
src/main.rs
@@ -4,27 +4,24 @@ use prettytable::{row, Cell, Row, Table};
|
|||||||
mod cli;
|
mod cli;
|
||||||
mod mensa;
|
mod mensa;
|
||||||
|
|
||||||
//use crate::mensa::*;
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
|
||||||
#[tokio::main]
|
|
||||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
||||||
let args = cli::get_args();
|
let args = cli::get_args();
|
||||||
exec_arguments(&args).await?;
|
exec_arguments(&args)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn exec_arguments(args: &cli::Args) -> Result<(), Box<dyn std::error::Error>> {
|
fn exec_arguments(args: &cli::Args) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
let shedhalle = mensa::Mensa::from(mensa::MensaName::Shedhalle);
|
let shedhalle = mensa::Mensa::from(mensa::MensaName::Shedhalle);
|
||||||
let morgenstelle = mensa::Mensa::from(mensa::MensaName::Morgenstelle);
|
let morgenstelle = mensa::Mensa::from(mensa::MensaName::Morgenstelle);
|
||||||
|
|
||||||
if args.morgenstelle {
|
if args.morgenstelle {
|
||||||
if let mensa::Mensa::Morgenstelle(resp) = morgenstelle.await? {
|
if let mensa::Mensa::Morgenstelle(resp) = morgenstelle? {
|
||||||
exec_arg_helper(args, &resp);
|
exec_arg_helper(args, &resp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if args.shedhalle {
|
if args.shedhalle {
|
||||||
if let mensa::Mensa::Shedhalle(resp) = shedhalle.await? {
|
if let mensa::Mensa::Shedhalle(resp) = shedhalle? {
|
||||||
exec_arg_helper(args, &resp);
|
exec_arg_helper(args, &resp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
38
src/mensa.rs
38
src/mensa.rs
@@ -1,7 +1,10 @@
|
|||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
use chrono::{Datelike, Local};
|
use chrono::{Datelike, Local};
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
use ureq::{Agent, Error};
|
||||||
|
|
||||||
pub enum MensaName {
|
pub enum MensaName {
|
||||||
Shedhalle,
|
Shedhalle,
|
||||||
@@ -21,25 +24,34 @@ pub enum Mensa {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Mensa {
|
impl Mensa {
|
||||||
pub async fn from(name: MensaName) -> Result<Mensa, Box<dyn std::error::Error>> {
|
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();
|
||||||
|
|
||||||
match name {
|
match name {
|
||||||
MensaName::Shedhalle => {
|
MensaName::Shedhalle => {
|
||||||
let resp = reqwest::get(
|
let resp = agent
|
||||||
"https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de",
|
.get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de")
|
||||||
)
|
.call()?
|
||||||
.await?
|
.into_json::<MensaShedhalle>()?;
|
||||||
.json::<MensaShedhalle>()
|
//let resp = reqwest::blocking::get(
|
||||||
.await?;
|
// "https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de",
|
||||||
|
//)?
|
||||||
|
//.json::<MensaShedhalle>()?;
|
||||||
|
|
||||||
Ok(Mensa::Shedhalle(resp))
|
Ok(Mensa::Shedhalle(resp))
|
||||||
}
|
}
|
||||||
MensaName::Morgenstelle => {
|
MensaName::Morgenstelle => {
|
||||||
let resp = reqwest::get(
|
//let resp = reqwest::blocking::get(
|
||||||
"https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de",
|
// "https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de",
|
||||||
)
|
//)?
|
||||||
.await?
|
//.json::<MensaMorgenstelle>()?;
|
||||||
.json::<MensaMorgenstelle>()
|
let resp = agent
|
||||||
.await?;
|
.get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de")
|
||||||
|
.call()?
|
||||||
|
.into_json::<MensaMorgenstelle>()?;
|
||||||
|
|
||||||
Ok(Mensa::Morgenstelle(resp))
|
Ok(Mensa::Morgenstelle(resp))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user