1use 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
15pub 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}