From 4c56f91c88365a3c5ad890b02e8e9f52c314ea0c Mon Sep 17 00:00:00 2001 From: jakka Date: Mon, 8 Sep 2025 16:53:52 +0300 Subject: in proccess of switching from serde to musli --- src/types.rs | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/types.rs (limited to 'src/types.rs') 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, + 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, +} -- cgit v1.3.1