fixes
This commit is contained in:
@@ -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}")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user