1use serde::Serialize;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
6pub enum Error {
7 #[error("key length not match! expected 32, got {0}")]
8 KeyLengthMismatch(usize),
9 #[error("iterations must be non zero!")]
10 ZeroIterations,
11 #[error("url must be like https://paste.fitgirl-repacks.site/?{{pasteid}}#{{key_base58}}")]
12 IllFormedURL,
13
14 #[cfg(feature = "ureq")]
15 #[error("request error: {0}")]
16 Ureq(#[from] ureq::Error),
17 #[cfg(feature = "reqwest")]
18 #[error("request error: {0}")]
19 Reqwest(#[from] reqwest::Error),
20
21 #[cfg(feature = "nyquest")]
22 #[error("request error: {0}")]
23 Nyquest(#[from] nyquest::Error),
24 #[cfg(feature = "nyquest")]
25 #[error("build client error: {0}")]
26 NyquestBuildClient(#[from] nyquest::client::BuildClientError),
27
28 #[error("base58 decode error: {0}")]
29 Base58(#[from] bs58::decode::Error),
30 #[error("base64 decode error: {0}")]
31 Base64(#[from] base64::DecodeError),
32 #[error("zlib decompress error")]
33 DecompressError,
34
35 #[error("aes-256-gcm decryption error")]
36 AesGcm,
37
38 #[error("deserialize error: {0}")]
39 JSONSerialize(#[from] serde_json::Error),
40}
41
42impl Serialize for Error {
43 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
44 where
45 S: serde::Serializer,
46 {
47 serializer.serialize_str(&self.to_string())
48 }
49}