diff options
| author | jakka <jakka@jakka.su> | 2025-09-17 23:02:14 +0300 |
|---|---|---|
| committer | jakka <jakka@jakka.su> | 2025-09-17 23:02:14 +0300 |
| commit | 2cea08a292a75abce7130c1d8522de7cb9739cb6 (patch) | |
| tree | 212161635213ec2cb6d749b2440840931aaa2d50 /src/client.rs | |
| parent | e67153693983c8fff3d45f22e3fe8cd3e3a00418 (diff) | |
implemeted better nested hydrus api response objects
Diffstat (limited to 'src/client.rs')
| -rw-r--r-- | src/client.rs | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/src/client.rs b/src/client.rs index a8061e4..28e3544 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,8 +1,7 @@ -use std::path::PathBuf; +use std::{collections::HashMap, path::PathBuf}; use async_trait::async_trait; use reqwest::{Body, RequestBuilder}; -use serde_json::Value; use tokio_util::codec::{BytesCodec, FramedRead}; use crate::{traits::*, types::*}; @@ -124,14 +123,13 @@ impl AccessManagement for HydrusClient { req_url.push_str("get_service?service_name="); req_url.push_str(&urlencoding::encode(name)); - Ok(serde_json::from_value::<Service>( - self.set_get_request_key(&req_url)? - .send() - .await? - .json::<Value>() - .await?["service"] - .take(), - )?) + Ok(self + .set_get_request_key(&req_url)? + .send() + .await? + .json::<HydrusResponse<Service>>() + .await? + .body) } async fn get_service_key(&self, key: &str) -> Result<Service> { @@ -139,27 +137,32 @@ impl AccessManagement for HydrusClient { req_url.push_str("get_service?service_key="); req_url.push_str(&urlencoding::encode(key)); - Ok(serde_json::from_value::<Service>( - self.set_get_request_key(&req_url)? - .send() - .await? - .json::<Value>() - .await?["service"] - .take(), - )?) + Ok(self + .set_get_request_key(&req_url)? + .send() + .await? + .json::<HydrusResponse<Service>>() + .await? + .body) } - async fn get_services(&self) -> Result<Vec<Service>> { + async fn get_services(&self) -> Result<HashMap<String, Service>> { let mut req_url = self.url.to_owned(); req_url.push_str("get_services"); - Ok(self + let mut services = self .set_get_request_key(&req_url)? .send() .await? - .json::<ServiceResponse>() + .json::<HydrusResponse<HashMap<String, Service>>>() .await? - .service_vec()) + .body; + + for (key, service) in services.iter_mut() { + service.service_key = key.to_string(); + } + + Ok(services) } } |
