cod_client/general_requests/
get.rs1use reqwest::Url;
2use serde::de::DeserializeOwned;
3use serde::Serialize;
4use std::fmt::Debug;
5use std::ops::Deref;
6
7use crate::CodebergClient;
8
9impl CodebergClient {
10 pub async fn get<T>(&self, api_endpoint: Url) -> anyhow::Result<T>
11 where
12 T: DeserializeOwned + Debug,
13 {
14 self.get_query::<[(); 0], T>(api_endpoint, []).await
15 }
16
17 pub async fn get_query<Q, T>(&self, api_endpoint: Url, query: Q) -> anyhow::Result<T>
18 where
19 Q: Serialize + Debug,
20 T: DeserializeOwned + Debug,
21 {
22 tracing::debug!("Query: {query:?}");
23 let request = self.deref().get(api_endpoint.clone()).query(&query);
24 tracing::debug!("Making GET call. Request: {:?}", request);
25 let response = request.send().await?;
26 tracing::debug!("Response Status: {:?}", response.status());
27 let json_response = response.json().await;
28 if json_response.is_err() {
29 let request = self.deref().get(api_endpoint).query(&query);
30 let response = request.send().await?;
31 tracing::debug!("======\n{}\n======", response.text().await?);
32 }
33 let json_response = json_response?;
34 tracing::debug!("Response: {:?}", json_response);
35 Ok(json_response)
36 }
37}