mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-12 16:08:54 +08:00
Add Support for muisca paz archive
This commit is contained in:
45
src/utils/serde_base64bytes.rs
Normal file
45
src/utils/serde_base64bytes.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
use base64::Engine;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::ops::{Deref, DerefMut};
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Base64Bytes {
|
||||
pub bytes: Vec<u8>,
|
||||
}
|
||||
|
||||
impl Deref for Base64Bytes {
|
||||
type Target = Vec<u8>;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.bytes
|
||||
}
|
||||
}
|
||||
|
||||
impl DerefMut for Base64Bytes {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.bytes
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for Base64Bytes {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: serde::Serializer,
|
||||
{
|
||||
let encoded = base64::engine::general_purpose::STANDARD.encode(&self.bytes);
|
||||
serializer.serialize_str(&encoded)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> Deserialize<'de> for Base64Bytes {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let s: &str = Deserialize::deserialize(deserializer)?;
|
||||
let decoded = base64::engine::general_purpose::STANDARD
|
||||
.decode(s)
|
||||
.map_err(serde::de::Error::custom)?;
|
||||
Ok(Base64Bytes { bytes: decoded })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user