feat: add image fetching
This commit is contained in:
@@ -68,7 +68,7 @@ enum EitherTyp {
|
||||
}
|
||||
|
||||
/// Deserialize either a gid number or a groupname into a [`gid_t`]
|
||||
#[allow(clippy::missing_errors_doc)]
|
||||
#[expect(clippy::missing_errors_doc)]
|
||||
pub fn deserialize_group<'de, D>(d: D) -> Result<gid_t, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
@@ -101,3 +101,21 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
/// Deserialize into [`magic::cookie::DatabasePaths`] as if it were a [`Vec<String>`]
|
||||
#[expect(clippy::missing_errors_doc)]
|
||||
pub fn deserialize_magic_paths<'de, D>(d: D) -> Result<magic::cookie::DatabasePaths, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
{
|
||||
use serde::de::Unexpected;
|
||||
|
||||
let paths = Vec::<String>::deserialize(d)?;
|
||||
|
||||
// TODO: could use this `_err`
|
||||
paths.try_into().map_err(|_err| {
|
||||
D::Error::invalid_value(
|
||||
Unexpected::Other("invalid magic db path"),
|
||||
&"valid magic db path",
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
use std::fmt::Debug;
|
||||
use std::{
|
||||
fmt::Debug,
|
||||
ops::{Deref, DerefMut},
|
||||
};
|
||||
|
||||
use libc::gid_t;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -14,3 +17,37 @@ impl Debug for Group {
|
||||
Debug::fmt(&self.0, f)
|
||||
}
|
||||
}
|
||||
|
||||
#[repr(transparent)]
|
||||
#[derive(Deserialize, Default)]
|
||||
pub struct DatabasePaths(
|
||||
#[serde(deserialize_with = "inner_helpers::deserialize_magic_paths")]
|
||||
pub magic::cookie::DatabasePaths,
|
||||
);
|
||||
|
||||
// impl Default for DatabasePaths {
|
||||
// fn default() -> Self {
|
||||
// Self(["/usr/share/file/misc/magic"].try_into().expect(""))
|
||||
// }
|
||||
// }
|
||||
|
||||
impl Debug for DatabasePaths {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
Debug::fmt(&self.0, f)
|
||||
// f.write_str("<magic paths>")
|
||||
}
|
||||
}
|
||||
|
||||
impl Deref for DatabasePaths {
|
||||
type Target = magic::cookie::DatabasePaths;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl DerefMut for DatabasePaths {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.0
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user