summaryrefslogtreecommitdiff
path: root/src/types.rs
diff options
context:
space:
mode:
authorjakka <jakka@jakka.su>2025-09-08 16:53:52 +0300
committerjakka <jakka@jakka.su>2025-09-08 16:53:52 +0300
commit4c56f91c88365a3c5ad890b02e8e9f52c314ea0c (patch)
tree271e77228c6cd82ba1f5e940ef2df42f3bd59d63 /src/types.rs
parent2e261ac64cadf24b3edc679e58098951e56c1630 (diff)
in proccess of switching from serde to musli
Diffstat (limited to 'src/types.rs')
-rw-r--r--src/types.rs82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/types.rs b/src/types.rs
new file mode 100644
index 0000000..d13a8aa
--- /dev/null
+++ b/src/types.rs
@@ -0,0 +1,82 @@
+use musli::{Decode, Encode};
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+pub enum HydrusError {
+ #[error("failed to connect to Hydrus")]
+ NetworkError(ureq::Error),
+ #[error("failed to deserialize data")]
+ DeserializeError(musli::Error),
+}
+
+impl Into
+
+#[derive(Decode, Encode, PartialEq, Debug)]
+#[repr(u8)]
+pub enum HydrusPermissions {
+ ImportAndEditURLs = 0,
+ ImportAndEditFiles,
+ EditFileTags,
+ SearchAndFetchFiles,
+ ManagePages,
+ ManageCookiesAndHeaders,
+ ManageDatabase,
+ EditFileNotes,
+ EditFileRelationships,
+ EditFileRatings,
+ ManagePopups,
+ EditFileTimes,
+ CommitPending,
+ SeeLocalPaths,
+}
+
+#[derive(Decode)]
+struct AccessKey {
+ access_key: String,
+}
+
+#[derive(Decode)]
+struct SessionKey {
+ session_key: String,
+}
+
+#[derive(Decode)]
+pub struct KeyInfo {
+ name: String,
+ permits_everything: bool,
+ basic_permissions: Vec<HydrusPermissions>,
+ human_permissions: String,
+}
+
+#[derive(Decode, Encode, 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(Decode)]
+pub struct Service {
+ name: String,
+ #[musli(default)]
+ service_key: String,
+ servicetype: ServiceType,
+ type_pretty: String,
+}