Skip to main content

mlb_api/request/
reqwest.rs

1use crate::request::{Error, Result};
2use crate::types::MLBError;
3use serde::de::DeserializeOwned;
4
5/// # Errors
6/// See variants of [`Error`]
7#[cfg(not(all(test, debug_assertions)))]
8pub async fn get<T: DeserializeOwned>(url: String) -> Result<T> {
9	let bytes = reqwest::Client::builder().build()?.get(url).send().await?.bytes().await?;
10	let e = match serde_json::from_slice::<'_, T>(&bytes) {
11		Ok(t) => return Ok(t),
12		Err(e) => Error::Serde(e),
13	};
14	Err(Error::MLB(serde_json::from_slice::<'_, MLBError>(&bytes).map_err(|_| e)?))
15}
16
17/// # Errors
18/// See variants of [`Error`]
19#[cfg(all(test, debug_assertions))]
20pub async fn get<T: DeserializeOwned>(url: String) -> Result<T> {
21	let bytes = reqwest::Client::builder().build()?.get(url).send().await?.bytes().await?;
22	let mut de = serde_json::Deserializer::from_slice(&bytes);
23	let result: std::result::Result<T, serde_path_to_error::Error<_>> = serde_path_to_error::deserialize(&mut de);
24	let e = match result {
25		Ok(t) => return Ok(t),
26		Err(e) => Error::Serde(e),
27	};
28	Err(Error::MLB(serde_json::from_slice::<'_, MLBError>(&bytes).map_err(|_| e)?))
29}