Remove reqwest and tokio dependency

Use ureq http client instead
This commit is contained in:
2024-04-24 00:54:24 +02:00
parent fa60bb7efd
commit f57cb40b1f
4 changed files with 172 additions and 713 deletions

831
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,6 @@ edition = "2021"
chrono = "0.4.23"
clap = { version = "4.0.26", features = ["derive"] }
prettytable = "0.10.0"
reqwest = { version = "0.11", features = ["json"] }
serde = { version = "1.0.147", features = ["derive"] }
serde_derive = "1.0.147"
tokio = { version = "1", features = ["full"] }
ureq = { version = "*", features = ["json", "tls", ]}

View File

@@ -4,27 +4,24 @@ use prettytable::{row, Cell, Row, Table};
mod cli;
mod mensa;
//use crate::mensa::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = cli::get_args();
exec_arguments(&args).await?;
exec_arguments(&args)?;
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 morgenstelle = mensa::Mensa::from(mensa::MensaName::Morgenstelle);
if args.morgenstelle {
if let mensa::Mensa::Morgenstelle(resp) = morgenstelle.await? {
if let mensa::Mensa::Morgenstelle(resp) = morgenstelle? {
exec_arg_helper(args, &resp);
}
}
if args.shedhalle {
if let mensa::Mensa::Shedhalle(resp) = shedhalle.await? {
if let mensa::Mensa::Shedhalle(resp) = shedhalle? {
exec_arg_helper(args, &resp);
}
}

View File

@@ -1,7 +1,10 @@
extern crate serde_derive;
use std::time::Duration;
use chrono::{Datelike, Local};
use serde::{Deserialize, Serialize};
use ureq::{Agent, Error};
pub enum MensaName {
Shedhalle,
@@ -21,25 +24,34 @@ pub enum 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 {
MensaName::Shedhalle => {
let resp = reqwest::get(
"https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de",
)
.await?
.json::<MensaShedhalle>()
.await?;
let resp = agent
.get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de")
.call()?
.into_json::<MensaShedhalle>()?;
//let resp = reqwest::blocking::get(
// "https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/611?lang=de",
//)?
//.json::<MensaShedhalle>()?;
Ok(Mensa::Shedhalle(resp))
}
MensaName::Morgenstelle => {
let resp = reqwest::get(
"https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de",
)
.await?
.json::<MensaMorgenstelle>()
.await?;
//let resp = reqwest::blocking::get(
// "https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de",
//)?
//.json::<MensaMorgenstelle>()?;
let resp = agent
.get("https://www.my-stuwe.de//wp-json/mealplans/v1/canteens/621?lang=de")
.call()?
.into_json::<MensaMorgenstelle>()?;
Ok(Mensa::Morgenstelle(resp))
}