From 2cea08a292a75abce7130c1d8522de7cb9739cb6 Mon Sep 17 00:00:00 2001 From: jakka Date: Wed, 17 Sep 2025 23:02:14 +0300 Subject: implemeted better nested hydrus api response objects --- src/client.rs | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) (limited to 'src/client.rs') 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::( - self.set_get_request_key(&req_url)? - .send() - .await? - .json::() - .await?["service"] - .take(), - )?) + Ok(self + .set_get_request_key(&req_url)? + .send() + .await? + .json::>() + .await? + .body) } async fn get_service_key(&self, key: &str) -> Result { @@ -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::( - self.set_get_request_key(&req_url)? - .send() - .await? - .json::() - .await?["service"] - .take(), - )?) + Ok(self + .set_get_request_key(&req_url)? + .send() + .await? + .json::>() + .await? + .body) } - async fn get_services(&self) -> Result> { + async fn get_services(&self) -> Result> { 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::() + .json::>>() .await? - .service_vec()) + .body; + + for (key, service) in services.iter_mut() { + service.service_key = key.to_string(); + } + + Ok(services) } } -- cgit v1.3.1