summaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs95
1 files changed, 5 insertions, 90 deletions
diff --git a/src/client.rs b/src/client.rs
index a771abb..06d55d6 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -1,15 +1,4 @@
-use serde::Deserialize;
-use serde_json::json;
-use serde_repr::{Deserialize_repr, Serialize_repr};
-use thiserror::Error;
-
-#[derive(Error, Debug)]
-pub enum HydrusError {
- #[error("failed to connect to Hydrus")]
- NetworkError(ureq::Error),
- #[error("failed to deserialize data")]
- DeserializeError(ureq::Error),
-}
+use crate::types::*;
type Result<T> = std::result::Result<T, HydrusError>;
@@ -19,82 +8,6 @@ pub struct HydrusClient {
url: String,
}
-#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)]
-#[repr(u8)]
-pub enum HydrusPermissions {
- ImportAndEditURLs = 0,
- ImportAndEditFiles,
- EditFileTags,
- SearchAndFetchFiles,
- ManagePages,
- ManageCookiesAndHeaders,
- ManageDatabase,
- EditFileNotes,
- EditFileRelationships,
- EditFileRatings,
- ManagePopups,
- EditFileTimes,
- CommitPending,
- SeeLocalPaths,
-}
-
-#[derive(Deserialize)]
-struct AccessKey {
- access_key: String,
-}
-
-#[derive(Deserialize)]
-struct SessionKey {
- session_key: String,
-}
-
-#[derive(Deserialize)]
-pub struct KeyInfo {
- name: String,
- permits_everything: bool,
- basic_permissions: Vec<HydrusPermissions>,
- human_permissions: String,
-}
-
-#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)]
-#[repr(u8)]
-pub enum ServiceType {
- TagRepository = 0,
- FileRepository,
- LocalFileDomain,
- LocalTagDomain = 5,
- NumericalRating,
- BoolRating,
- AllKnownTags = 10,
- AllKnownFiles,
- LocalBooru,
- IPFS,
- Trash,
- AllLocalFiles,
- FileNotes = 17,
- ClientAPI,
- DeletedFromAnywhere,
- LocalUpdates,
- AllMyFiles,
- IncDecRating,
- ServerAdmin = 99,
-}
-
-#[derive(Deserialize)]
-pub struct Service {
- name: String,
- servicetype: ServiceType,
- type_pretty: String,
-}
-
-#[derive(Deserialize)]
-pub struct GetService {
- name: String,
- service_key: String,
- servicetype: ServiceType,
- type_pretty: String,
-}
-
impl HydrusClient {
pub fn new(url: String) -> HydrusClient {
HydrusClient {
@@ -125,7 +38,7 @@ impl HydrusClient {
req_url.push_str("&permit_everything=true");
} else {
req_url.push_str("&basic_permissions=");
- let json_string = serde_json::to_string(&json!(permissions)).unwrap();
+ let json_string = musli::json::to_string(&permissions).unwrap();
req_url.push_str(&urlencoding::encode(&json_string));
};
@@ -135,12 +48,14 @@ impl HydrusClient {
return Err(HydrusError::NetworkError(error));
}
- let key = response.unwrap().body_mut().read_json::<AccessKey>();
+ let key = response.unwrap().body_mut().read_to_vec();
if let Err(error) = key {
return Err(HydrusError::DeserializeError(error));
};
+ let accesskey: String = musli::json::decode(key.unwrap().as_slice()).unwrap();
+
Ok(key.unwrap().access_key)
}