44 lines
1.3 KiB
Rust
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
|
|
}
|
|
}
|
|
}
|