mirror of
https://github.com/chatmail/core.git
synced 2026-04-28 10:56:29 +03:00
@@ -1,7 +1,6 @@
|
||||
//! # Messages and their identifiers.
|
||||
|
||||
use std::collections::BTreeSet;
|
||||
use std::ffi::OsStr;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::str;
|
||||
|
||||
@@ -1095,7 +1094,7 @@ impl Message {
|
||||
/// otherwise it will be copied to the blobdir first.
|
||||
///
|
||||
/// In order to deduplicate files that contain the same data,
|
||||
/// the file will be named as a hash of the file data.
|
||||
/// the file will be named `<hash>.<extension>`, e.g. `ce940175885d7b78f7b7e9f1396611f.jpg`.
|
||||
///
|
||||
/// NOTE:
|
||||
/// - This function will rename the file. To get the new file path, call `get_file()`.
|
||||
@@ -1107,14 +1106,18 @@ impl Message {
|
||||
name: Option<&str>,
|
||||
filemime: Option<&str>,
|
||||
) -> Result<()> {
|
||||
let blob = BlobObject::create_and_deduplicate(context, file)?;
|
||||
if let Some(name) = name {
|
||||
self.param.set(Param::Filename, name);
|
||||
let name = if let Some(name) = name {
|
||||
name.to_string()
|
||||
} else {
|
||||
let file_name = file.file_name().map(OsStr::to_string_lossy);
|
||||
self.param.set_optional(Param::Filename, file_name);
|
||||
}
|
||||
file.file_name()
|
||||
.map(|s| s.to_string_lossy().to_string())
|
||||
.unwrap_or_else(|| "unknown_file".to_string())
|
||||
};
|
||||
|
||||
let blob = BlobObject::create_and_deduplicate(context, file, &name)?;
|
||||
self.param.set(Param::File, blob.as_name());
|
||||
|
||||
self.param.set(Param::Filename, name);
|
||||
self.param.set_optional(Param::MimeType, filemime);
|
||||
|
||||
Ok(())
|
||||
@@ -1123,7 +1126,7 @@ impl Message {
|
||||
/// Creates a new blob and sets it as a file associated with a message.
|
||||
///
|
||||
/// In order to deduplicate files that contain the same data,
|
||||
/// the filename will be a hash of the file data.
|
||||
/// the file will be named `<hash>.<extension>`, e.g. `ce940175885d7b78f7b7e9f1396611f.jpg`.
|
||||
///
|
||||
/// NOTE: The file must not be modified after this function was called.
|
||||
pub fn set_file_from_bytes(
|
||||
@@ -1133,7 +1136,7 @@ impl Message {
|
||||
data: &[u8],
|
||||
filemime: Option<&str>,
|
||||
) -> Result<()> {
|
||||
let blob = BlobObject::create_and_deduplicate_from_bytes(context, data)?;
|
||||
let blob = BlobObject::create_and_deduplicate_from_bytes(context, data, name)?;
|
||||
self.param.set(Param::Filename, name);
|
||||
self.param.set(Param::File, blob.as_name());
|
||||
self.param.set_optional(Param::MimeType, filemime);
|
||||
|
||||
Reference in New Issue
Block a user