spm_swift_package/infrastructure/
network_client.rs1use reqwest;
2
3pub struct NetworkClient {
4 client: reqwest::Client,
5}
6
7impl NetworkClient {
8 pub fn new() -> Self {
9 NetworkClient {
10 client: reqwest::Client::new(),
11 }
12 }
13
14 pub async fn get_json<T: for<'de> serde::Deserialize<'de>>(
15 &self,
16 url: &str,
17 user_agent: &str,
18 ) -> Result<T, Box<dyn std::error::Error + Send + Sync>> {
19 let response = self
20 .client
21 .get(url)
22 .header(reqwest::header::USER_AGENT, user_agent)
23 .send()
24 .await?;
25
26 if response.status().is_success() {
27 let parsed = response.json::<T>().await?;
28 Ok(parsed)
29 } else {
30 Err(format!("Request failed: {}", response.status()).into())
31 }
32 }
33}