aven_core/attachments/
mod.rs1pub(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}