Skip to main content

aven_core/attachments/
mod.rs

1pub(crate) mod blocking;
2pub(crate) mod decode;
3pub(crate) mod lifecycle;
4pub(crate) mod optimization;
5pub(crate) mod storage;
6pub(crate) mod validation;
7
8#[derive(Clone, Copy, Debug, PartialEq, Eq)]
9pub enum AttachmentBytesState {
10    Present,
11    PendingDownload,
12    Unavailable,
13}
14
15pub use blocking::{run as run_blocking, run_preview};
16pub use decode::{decode_first_frame, validate_image_blocking};
17pub use lifecycle::{
18    ByteCount, DEFAULT_MAINTENANCE_LIMIT, DEFAULT_ORIGINAL_QUOTA_BYTES,
19    DEFAULT_PREVIEW_QUOTA_BYTES, LifecyclePolicy, LifecycleReport, PruneSummary,
20    prune_preview_cache,
21};
22pub use optimization::{ImageOptimizationPolicy, OptimizedBytes, optimize_image_bytes};
23pub use storage::{object_path, sha256_hex};
24pub use validation::{
25    MAX_ALT_TEXT_LEN, MAX_BLOB_BYTES, MAX_FILENAME_LEN, SUPPORTED_MEDIA_TYPES, validate_alt_text,
26    validate_attachment_id, validate_blob_size, validate_dimensions, validate_filename,
27    validate_media_type, validate_sha256,
28};
29
30pub fn default_blob_dir(database_path: &std::path::Path) -> std::path::PathBuf {
31    let mut value = database_path.as_os_str().to_os_string();
32    value.push(".blobs");
33    std::path::PathBuf::from(value)
34}