am_api/request/
mod.rs

1//! Request builders and structures
2
3use crate::error::Error;
4use crate::resource::{ErrorResponse, ResourceResponse};
5use reqwest::Response;
6use serde::de::DeserializeOwned;
7
8pub mod builder;
9pub(crate) mod context;
10pub mod extension;
11pub(crate) mod paginated;
12pub mod relationship;
13pub mod view;
14
15/// Default fetch entries limit for a page
16pub const DEFAULT_FETCH_LIMIT: usize = 21;
17
18pub(crate) async fn try_resource_response<R>(
19    response: Response,
20) -> Result<ResourceResponse<R>, Error>
21where
22    R: DeserializeOwned,
23{
24    if !response.status().is_success() {
25        println!("{}", response.status());
26        let error_response: ErrorResponse = response.json().await?;
27        return Err(Error::MusicError(error_response));
28    }
29    let text = response.text().await?;
30    println!("{}", text);
31    Ok(serde_json::from_str(&text)?)
32}