use getset::Getters;
use std::fmt;
#[derive(Clone, Getters)]
pub struct MediaFile {
#[getset(get = "pub")]
data: Vec<u8>,
}
impl fmt::Debug for MediaFile {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "MediaFile ({} bytes)", self.data.len())
}
}
impl MediaFile {
#[must_use]
pub fn hash(&self) -> String {
sha256::digest(&self.data)
}
#[must_use]
pub fn mime_type(&self) -> Option<infer::Type> {
infer::get(&self.data)
}
}
impl<D: Into<Vec<u8>>> From<D> for MediaFile {
fn from(value: D) -> Self {
Self { data: value.into() }
}
}