From dfbc17db741bad16129e0bb8d21cef22e0c439f4 Mon Sep 17 00:00:00 2001 From: jakka Date: Mon, 8 Sep 2025 22:57:37 +0300 Subject: continued working on api. added proper encoding and decoding for permissions and service types --- src/client.rs | 50 +++++++++++++------------------------------------- 1 file changed, 13 insertions(+), 37 deletions(-) (limited to 'src/client.rs') diff --git a/src/client.rs b/src/client.rs index 06d55d6..3caa330 100644 --- a/src/client.rs +++ b/src/client.rs @@ -38,25 +38,15 @@ impl HydrusClient { req_url.push_str("&permit_everything=true"); } else { req_url.push_str("&basic_permissions="); - let json_string = musli::json::to_string(&permissions).unwrap(); + let json_string = musli::json::to_string(&permissions)?; req_url.push_str(&urlencoding::encode(&json_string)); }; - let response = ureq::get(req_url).call(); + let response = ureq::get(req_url).call()?.body_mut().read_to_vec()?; - if let Err(error) = response { - return Err(HydrusError::NetworkError(error)); - } - - let key = response.unwrap().body_mut().read_to_vec(); - - if let Err(error) = key { - return Err(HydrusError::DeserializeError(error)); - }; + let key = musli::json::decode(response.as_slice())?; - let accesskey: String = musli::json::decode(key.unwrap().as_slice()).unwrap(); - - Ok(key.unwrap().access_key) + Ok(key) } pub fn get_session_key(&self) -> Result { @@ -69,19 +59,11 @@ impl HydrusClient { request = request.header("Hydrus-Client-API-Access-Key", key); } - let response = request.call(); - - if let Err(error) = response { - return Err(HydrusError::NetworkError(error)); - } + let response = request.call()?.body_mut().read_to_vec()?; - let key = response.unwrap().body_mut().read_json::(); + let key = musli::json::decode(response.as_slice())?; - if let Err(error) = key { - return Err(HydrusError::DeserializeError(error)); - } - - Ok(key.unwrap().session_key) + Ok(key) } pub fn verify_access_key(&self, key: String) -> Result { @@ -89,22 +71,16 @@ impl HydrusClient { req_url.push_str("/verify_access_key"); let response = ureq::get(req_url) .header("Hydrus-Client-API-Access-Key", key) - .call(); - - if let Err(error) = response { - return Err(HydrusError::NetworkError(error)); - } - - let data = response.unwrap().body_mut().read_json::(); + .call()? + .body_mut() + .read_to_vec()?; - if let Err(error) = data { - return Err(HydrusError::DeserializeError(error)); - } + let data: KeyInfo = musli::json::decode(response.as_slice())?; - Ok(data.unwrap()) + Ok(data) } - pub fn get_service_name(&self, name: String) -> Result { + pub fn get_service_name(&self, name: String) -> Result { let mut req_url = self.url.to_owned(); req_url.push_str("/get_service?service_name="); req_url.push_str(&urlencoding::encode(&name)); -- cgit v1.3.1