This commit is contained in:
Mateusz Gruszczyński
2026-07-24 23:16:03 +02:00
parent 041f586261
commit 3576877ace
17 changed files with 629 additions and 148 deletions
+23
View File
@@ -216,6 +216,29 @@ impl From<std::io::Error> for StorageError {
}
}
pub async fn delete_url_file(
storage: &Storage,
kind: &str,
owner_id: i64,
url: &str,
) -> Result<(), StorageError> {
let parts: Vec<&str> = url.trim_start_matches('/').split('/').collect();
if parts.len() != 3 || parts[0] != "f" {
return Ok(());
}
let filename = sanitize_storage_filename(parts[2]);
storage
.delete(&object_key(kind, owner_id, parts[1], &filename))
.await
}
fn sanitize_storage_filename(value: &str) -> String {
value
.chars()
.filter(|c| c.is_ascii_alphanumeric() || matches!(c, '.' | '-' | '_'))
.collect::<String>()
}
pub fn object_key(kind: &str, owner_id: i64, token: &str, filename: &str) -> String {
format!("{kind}/{owner_id}_{token}/{filename}")
}