summaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
authorjakka <jakka@jakka.su>2025-09-08 22:57:37 +0300
committerjakka <jakka@jakka.su>2025-09-08 22:57:37 +0300
commitdfbc17db741bad16129e0bb8d21cef22e0c439f4 (patch)
tree82651c9fe894cf557de906176aadcf6c2633803d /src/client.rs
parent4c56f91c88365a3c5ad890b02e8e9f52c314ea0c (diff)
continued working on api. added proper encoding and decoding for permissions and service types
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs50
1 files changed, 13 insertions, 37 deletions
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<String> {
@@ -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::<SessionKey>();
+ 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<KeyInfo> {
@@ -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::<KeyInfo>();
+ .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<GetService> {
+ pub fn get_service_name(&self, name: String) -> Result<Service> {
let mut req_url = self.url.to_owned();
req_url.push_str("/get_service?service_name=");
req_url.push_str(&urlencoding::encode(&name));