cart_sync/src/requester.rs
2023-03-17 21:01:40 +01:00

44 lines
1.3 KiB
Rust

use cart_sync::models::{shopping_list_entry, ShoppingListEntry};
use reqwest::{self, Client};
use serde::Deserialize;
use std::env;
pub async fn fetch_shopping_list_entries(api_token: &str) -> Option<Vec<ShoppingListEntry>> {
let base_url = env::var("TANDOOR_BASE_URL").expect("Base Url needed");
let route = "/shopping-list-entry/";
let url = format!("{}{}", base_url, route);
let client = Client::new();
let req = client
.get(&url)
.query(&[("checked", "false")])
.bearer_auth(api_token);
let response = req.send().await;
match response {
Ok(resolved) => match resolved.status() {
reqwest::StatusCode::OK => {
let json_body = resolved.json::<Vec<ShoppingListEntry>>().await;
match json_body {
Ok(j) => Some(j),
Err(e) => {
println!("{}", e);
None
}
}
}
reqwest::StatusCode::FORBIDDEN => {
println!("Denied {:#?}", resolved);
None
}
_ => {
println!("Fail {:#?}", resolved);
None
}
},
Err(failed) => {
println!("There was an error in the reqwest: {failed}");
None
}
}
}