diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/client.rs | 29 | ||||
| -rw-r--r-- | src/tests.rs | 23 |
2 files changed, 37 insertions, 15 deletions
diff --git a/src/client.rs b/src/client.rs index d9b2ed5..a8061e4 100644 --- a/src/client.rs +++ b/src/client.rs @@ -2,6 +2,7 @@ use std::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::*}; @@ -123,12 +124,14 @@ impl AccessManagement for HydrusClient { req_url.push_str("get_service?service_name="); req_url.push_str(&urlencoding::encode(name)); - Ok(self - .set_get_request_key(&req_url)? - .send() - .await? - .json::<Service>() - .await?) + Ok(serde_json::from_value::<Service>( + self.set_get_request_key(&req_url)? + .send() + .await? + .json::<Value>() + .await?["service"] + .take(), + )?) } async fn get_service_key(&self, key: &str) -> Result<Service> { @@ -136,12 +139,14 @@ impl AccessManagement for HydrusClient { req_url.push_str("get_service?service_key="); req_url.push_str(&urlencoding::encode(key)); - Ok(self - .set_get_request_key(&req_url)? - .send() - .await? - .json::<Service>() - .await?) + Ok(serde_json::from_value::<Service>( + self.set_get_request_key(&req_url)? + .send() + .await? + .json::<Value>() + .await?["service"] + .take(), + )?) } async fn get_services(&self) -> Result<Vec<Service>> { diff --git a/src/tests.rs b/src/tests.rs index c98d59a..5e8d9a7 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -2,9 +2,26 @@ use crate::client::HydrusClient; use crate::{traits::*, types::*}; #[tokio::test] -async fn test_service_info() { +async fn test_service_name_info() { let mut client: HydrusClient = HydrusClient::new("http://127.0.0.1:51251/"); client.set_api_key("7ab7accf6cf12b2c6c30436cd8fe16361aee33679dbd90da279b5c22b33d622a"); - let res = client.get_service_name("all my files").await.unwrap(); - println!("{:?}", res); + let _ = client.get_service_name("all my files").await.unwrap(); +} + +#[tokio::test] +async fn test_service_key_info() { + let mut client: HydrusClient = HydrusClient::new("http://127.0.0.1:51251/"); + client.set_api_key("7ab7accf6cf12b2c6c30436cd8fe16361aee33679dbd90da279b5c22b33d622a"); + let _ = client + .get_service_key("616c6c206c6f63616c206d65646961") + .await + .unwrap(); +} + +#[tokio::test] +async fn test_get_services() { + let mut client: HydrusClient = HydrusClient::new("http://127.0.0.1:51251/"); + client.set_api_key("7ab7accf6cf12b2c6c30436cd8fe16361aee33679dbd90da279b5c22b33d622a"); + let res = client.get_services().await.unwrap(); + assert!(!res.is_empty()) } |
