summaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
authorjakka <jakka@jakka.su>2025-09-13 21:27:26 +0300
committerjakka <jakka@jakka.su>2025-09-13 21:27:26 +0300
commitdfab573a0de95ff95e24653901e0ddecdd7c5459 (patch)
treecaad49784baba7b2da92c8643d95953ca8d3bca1 /src/client.rs
parentd7cdf6cd80fb25deb4bbcb7af37e569c404bd0c0 (diff)
json de/serialization via serdeserde
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs70
1 files changed, 54 insertions, 16 deletions
diff --git a/src/client.rs b/src/client.rs
index 49d903e..e13750d 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -38,13 +38,11 @@ impl HydrusClient {
req_url.push_str("&permit_everything=true");
} else {
req_url.push_str("&basic_permissions=");
- let json_string = musli::json::to_string(&permissions)?;
+ let json_string = serde_json::to_string(&permissions)?;
req_url.push_str(&urlencoding::encode(&json_string));
};
- let response = ureq::get(req_url).call()?.body_mut().read_to_vec()?;
-
- let key: AccessKey = musli::json::decode(response.as_slice())?;
+ let key: AccessKey = ureq::get(req_url).call()?.body_mut().read_json()?;
Ok(key.access_key)
}
@@ -59,9 +57,7 @@ impl HydrusClient {
request = request.header("Hydrus-Client-API-Access-Key", key);
}
- let response = request.call()?.body_mut().read_to_vec()?;
-
- let key: SessionKey = musli::json::decode(response.as_slice())?;
+ let key: SessionKey = request.call()?.body_mut().read_json()?;
Ok(key.session_key)
}
@@ -69,38 +65,80 @@ impl HydrusClient {
pub fn verify_access_key(&self, key: &str) -> Result<KeyInfo> {
let mut req_url = self.url.to_owned();
req_url.push_str("verify_access_key");
- let response = ureq::get(req_url)
+ let keyinfo: KeyInfo = ureq::get(req_url)
.header("Hydrus-Client-API-Access-Key", key)
.call()?
.body_mut()
- .read_to_vec()?;
-
- let data: KeyInfo = musli::json::decode(response.as_slice())?;
+ .read_json()?;
- Ok(data)
+ Ok(keyinfo)
}
pub fn get_service_name(&self, name: &str) -> 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));
- let response = if let Some(key) = &self.sessionkey {
+ let service: Service = if let Some(key) = &self.sessionkey {
+ ureq::get(req_url)
+ .header("Hydrus-Client-API-Access-Key", key)
+ .call()?
+ .body_mut()
+ .read_json()?
+ } else if let Some(key) = &self.apikey {
+ ureq::get(req_url)
+ .header("Hydrus-Client-API-Access-Key", key)
+ .call()?
+ .body_mut()
+ .read_json()?
+ } else {
+ return Err(HydrusError::KeyNotSupplied);
+ };
+
+ Ok(service)
+ }
+
+ pub fn get_service_key(&self, name: &str) -> Result<Service> {
+ let mut req_url = self.url.to_owned();
+ req_url.push_str("get_service?service_key=");
+ req_url.push_str(&urlencoding::encode(name));
+ let service: Service = if let Some(key) = &self.sessionkey {
ureq::get(req_url)
.header("Hydrus-Client-API-Access-Key", key)
.call()?
.body_mut()
- .read_to_vec()?
+ .read_json()?
} else if let Some(key) = &self.apikey {
ureq::get(req_url)
.header("Hydrus-Client-API-Access-Key", key)
.call()?
.body_mut()
- .read_to_vec()?
+ .read_json()?
} else {
return Err(HydrusError::KeyNotSupplied);
};
- let service: Service = musli::json::decode(response.as_slice())?;
Ok(service)
}
+
+ pub fn get_services(&self) -> Result<Vec<Service>> {
+ let mut req_url = self.url.to_owned();
+ req_url.push_str("get_services");
+ let response: ServiceResponse = if let Some(key) = &self.sessionkey {
+ ureq::get(req_url)
+ .header("Hydrus-Client-API-Access-Key", key)
+ .call()?
+ .body_mut()
+ .read_json()?
+ } else if let Some(key) = &self.apikey {
+ ureq::get(req_url)
+ .header("Hydrus-Client-API-Access-Key", key)
+ .call()?
+ .body_mut()
+ .read_json()?
+ } else {
+ return Err(HydrusError::KeyNotSupplied);
+ };
+ println!("{:?}", response);
+ Ok(vec![])
+ }
}