spm_swift_package/infrastructure/
network_client.rs

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