bump melib dependency to a modern version
This updates the melib dependency from an old version it was pinned to and updates the associated code and tests.pull/11/head
parent
a9a50f4659
commit
0216cc1276
|
@ -2,6 +2,12 @@
|
|||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "adler"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.7.6"
|
||||
|
@ -509,6 +515,9 @@ name = "bitflags"
|
|||
version = "2.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "blake3"
|
||||
|
@ -927,6 +936,15 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crc32fast"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.15"
|
||||
|
@ -1367,6 +1385,16 @@ dependencies = [
|
|||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "flate2"
|
||||
version = "1.0.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
|
||||
dependencies = [
|
||||
"crc32fast",
|
||||
"miniz_oxide",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "float-cmp"
|
||||
version = "0.9.0"
|
||||
|
@ -2304,31 +2332,37 @@ checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40"
|
|||
|
||||
[[package]]
|
||||
name = "melib"
|
||||
version = "0.7.2"
|
||||
source = "git+https://github.com/meli/meli?rev=2447a2c#2447a2cbfeaa8d6f7ec11a2a8a6f3be1ff2fea58"
|
||||
version = "0.8.5-rc.3"
|
||||
source = "git+https://git.meli-email.org/meli/meli.git?rev=64e60cb#64e60cb0ee79841ab40e3dba94ac27150a264c5c"
|
||||
dependencies = [
|
||||
"async-stream",
|
||||
"base64 0.13.1",
|
||||
"bincode",
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.4.1",
|
||||
"data-encoding",
|
||||
"encoding",
|
||||
"encoding_rs",
|
||||
"flate2",
|
||||
"futures",
|
||||
"indexmap",
|
||||
"libc",
|
||||
"libloading",
|
||||
"log",
|
||||
"native-tls",
|
||||
"nix",
|
||||
"nom",
|
||||
"notify",
|
||||
"polling",
|
||||
"regex",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"serde_path_to_error",
|
||||
"smallvec",
|
||||
"smol",
|
||||
"socket2",
|
||||
"unicode-segmentation",
|
||||
"uuid",
|
||||
"xdg",
|
||||
"xdg-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2375,6 +2409,15 @@ version = "0.2.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
|
||||
dependencies = [
|
||||
"adler",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.6.23"
|
||||
|
@ -4404,12 +4447,6 @@ dependencies = [
|
|||
"home",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xdg-utils"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db9fefe62d5969721e2cfc529e6a760901cc0da422b6d67e7bfd18e69490dba6"
|
||||
|
||||
[[package]]
|
||||
name = "xz2"
|
||||
version = "0.1.7"
|
||||
|
|
|
@ -27,7 +27,7 @@ use std::{
|
|||
|
||||
use mailpot::{
|
||||
melib,
|
||||
melib::{backends::maildir::MaildirPathTrait, smol, Envelope, EnvelopeHash},
|
||||
melib::{maildir::MaildirPathTrait, smol, Envelope, EnvelopeHash},
|
||||
models::{changesets::*, *},
|
||||
queue::{Queue, QueueEntry},
|
||||
transaction::TransactionBehavior,
|
||||
|
@ -802,7 +802,7 @@ pub fn import_maildir(
|
|||
EnvelopeHash(hasher.finish())
|
||||
}
|
||||
let mut buf = Vec::with_capacity(4096);
|
||||
let files = melib::backends::maildir::MaildirType::list_mail_in_maildir_fs(maildir_path, true)
|
||||
let files = melib::maildir::MaildirType::list_mail_in_maildir_fs(maildir_path, true)
|
||||
.context("Could not parse files in maildir path")?;
|
||||
let mut ctr = 0;
|
||||
for file in files {
|
||||
|
|
|
@ -31,7 +31,7 @@ pub fn datetime_header_value_lint(db: &mut Connection, dry_run: bool) -> Result<
|
|||
let iter = stmt.query_map([], |row| {
|
||||
let pk: i64 = row.get("pk")?;
|
||||
let date_s: String = row.get("datetime")?;
|
||||
match melib::datetime::rfc822_to_timestamp(date_s.trim()) {
|
||||
match melib::utils::datetime::rfc822_to_timestamp(date_s.trim()) {
|
||||
Err(_) | Ok(0) => {
|
||||
let mut timestamp: i64 = row.get("timestamp")?;
|
||||
let created: i64 = row.get("created")?;
|
||||
|
@ -75,7 +75,11 @@ pub fn datetime_header_value_lint(db: &mut Connection, dry_run: bool) -> Result<
|
|||
{
|
||||
v.to_rfc2822()
|
||||
} else if let Some(v) = timestamp.map(|t| {
|
||||
melib::datetime::timestamp_to_string(t, Some(melib::datetime::RFC822_DATE), true)
|
||||
melib::utils::datetime::timestamp_to_string(
|
||||
t,
|
||||
Some(melib::utils::datetime::formats::RFC822_DATE),
|
||||
true,
|
||||
)
|
||||
}) {
|
||||
v
|
||||
} else if let Ok(v) =
|
||||
|
|
|
@ -109,11 +109,23 @@ fn test_out_queue_flush() {
|
|||
assert!(env.subject().starts_with(&format!("[{}] ", foo_chat.id)));
|
||||
let headers = env.other_headers();
|
||||
|
||||
assert_eq!(headers.get("List-Id"), Some(&foo_chat.id_header()));
|
||||
assert_eq!(headers.get("List-Help"), foo_chat.help_header().as_ref());
|
||||
assert_eq!(
|
||||
headers.get("List-Post"),
|
||||
foo_chat.post_header(Some(&post_policy)).as_ref()
|
||||
headers
|
||||
.get(melib::HeaderName::LIST_ID)
|
||||
.map(|header| header.to_string()),
|
||||
Some(foo_chat.id_header())
|
||||
);
|
||||
assert_eq!(
|
||||
headers
|
||||
.get(melib::HeaderName::LIST_HELP)
|
||||
.map(|header| header.to_string()),
|
||||
foo_chat.help_header()
|
||||
);
|
||||
assert_eq!(
|
||||
headers
|
||||
.get(melib::HeaderName::LIST_POST)
|
||||
.map(|header| header.to_string()),
|
||||
foo_chat.post_header(Some(&post_policy))
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -306,11 +318,21 @@ fn test_list_requests_submission() {
|
|||
let headers_fn = |env: &melib::Envelope| {
|
||||
let headers = env.other_headers();
|
||||
|
||||
assert_eq!(headers.get("List-Id"), Some(&foo_chat.id_header()));
|
||||
assert_eq!(headers.get("List-Help"), foo_chat.help_header().as_ref());
|
||||
assert_eq!(
|
||||
headers.get("List-Post"),
|
||||
foo_chat.post_header(Some(&post_policy)).as_ref()
|
||||
headers.get(melib::HeaderName::LIST_ID),
|
||||
Some(foo_chat.id_header().as_str())
|
||||
);
|
||||
assert_eq!(
|
||||
headers
|
||||
.get(melib::HeaderName::LIST_HELP)
|
||||
.map(|header| header.to_string()),
|
||||
foo_chat.help_header()
|
||||
);
|
||||
assert_eq!(
|
||||
headers
|
||||
.get(melib::HeaderName::LIST_POST)
|
||||
.map(|header| header.to_string()),
|
||||
foo_chat.post_header(Some(&post_policy))
|
||||
);
|
||||
};
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ anyhow = "1.0.58"
|
|||
chrono = { version = "^0.4", features = ["serde", ] }
|
||||
jsonschema = { version = "0.17", default-features = false }
|
||||
log = "0.4"
|
||||
melib = { version = "*", default-features = false, features = ["smtp", "unicode_algorithms", "maildir_backend"], git = "https://github.com/meli/meli", rev = "2447a2c" }
|
||||
melib = { default-features = false, features = ["smtp", "unicode-algorithms", "maildir"], git = "https://git.meli-email.org/meli/meli.git", rev = "64e60cb" }
|
||||
minijinja = { version = "0.31.0", features = ["source", ] }
|
||||
percent-encoding = { version = "^2.1" }
|
||||
rusqlite = { version = "^0.30", features = ["bundled", "functions", "trace", "hooks", "serde_json", "array", "chrono", "unlock_notify"] }
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
mod settings;
|
||||
use log::trace;
|
||||
use melib::Address;
|
||||
use melib::{Address, HeaderName};
|
||||
use percent_encoding::utf8_percent_encode;
|
||||
pub use settings::*;
|
||||
|
||||
|
@ -168,7 +168,7 @@ impl PostFilter for AddListHeaders {
|
|||
trace!("Running AddListHeaders filter");
|
||||
let (mut headers, body) = melib::email::parser::mail(&post.bytes).unwrap();
|
||||
let sender = format!("<{}>", ctx.list.address);
|
||||
headers.push((&b"Sender"[..], sender.as_bytes()));
|
||||
headers.push((HeaderName::SENDER, sender.as_bytes()));
|
||||
|
||||
let list_id = Some(ctx.list.id_header());
|
||||
let list_help = ctx.list.help_header();
|
||||
|
@ -182,12 +182,12 @@ impl PostFilter for AddListHeaders {
|
|||
let list_archive = ctx.list.archive_header();
|
||||
|
||||
for (hdr, val) in [
|
||||
(b"List-Id".as_slice(), &list_id),
|
||||
(b"List-Help".as_slice(), &list_help),
|
||||
(b"List-Post".as_slice(), &list_post),
|
||||
(b"List-Unsubscribe".as_slice(), &list_unsubscribe),
|
||||
(b"List-Subscribe".as_slice(), &list_subscribe),
|
||||
(b"List-Archive".as_slice(), &list_archive),
|
||||
(HeaderName::LIST_ID, &list_id),
|
||||
(HeaderName::LIST_HELP, &list_help),
|
||||
(HeaderName::LIST_POST, &list_post),
|
||||
(HeaderName::LIST_UNSUBSCRIBE, &list_unsubscribe),
|
||||
(HeaderName::LIST_SUBSCRIBE, &list_subscribe),
|
||||
(HeaderName::LIST_ARCHIVE, &list_archive),
|
||||
] {
|
||||
if let Some(val) = val {
|
||||
headers.push((hdr, val.as_bytes()));
|
||||
|
@ -197,13 +197,13 @@ impl PostFilter for AddListHeaders {
|
|||
let mut new_vec = Vec::with_capacity(
|
||||
headers
|
||||
.iter()
|
||||
.map(|(h, v)| h.len() + v.len() + ": \r\n".len())
|
||||
.map(|(h, v)| h.as_str().as_bytes().len() + v.len() + ": \r\n".len())
|
||||
.sum::<usize>()
|
||||
+ "\r\n\r\n".len()
|
||||
+ body.len(),
|
||||
);
|
||||
for (h, v) in headers {
|
||||
new_vec.extend_from_slice(h);
|
||||
new_vec.extend_from_slice(h.as_str().as_bytes());
|
||||
new_vec.extend_from_slice(b": ");
|
||||
new_vec.extend_from_slice(v);
|
||||
new_vec.extend_from_slice(b"\r\n");
|
||||
|
@ -239,28 +239,25 @@ impl PostFilter for AddSubjectTagPrefix {
|
|||
trace!("Running AddSubjectTagPrefix filter");
|
||||
let (mut headers, body) = melib::email::parser::mail(&post.bytes).unwrap();
|
||||
let mut subject;
|
||||
if let Some((_, subj_val)) = headers
|
||||
.iter_mut()
|
||||
.find(|(k, _)| k.eq_ignore_ascii_case(b"Subject"))
|
||||
{
|
||||
if let Some((_, subj_val)) = headers.iter_mut().find(|(k, _)| k == HeaderName::SUBJECT) {
|
||||
subject = format!("[{}] ", ctx.list.id).into_bytes();
|
||||
subject.extend(subj_val.iter().cloned());
|
||||
*subj_val = subject.as_slice();
|
||||
} else {
|
||||
subject = format!("[{}] (no subject)", ctx.list.id).into_bytes();
|
||||
headers.push((&b"Subject"[..], subject.as_slice()));
|
||||
headers.push((HeaderName::SUBJECT, subject.as_slice()));
|
||||
}
|
||||
|
||||
let mut new_vec = Vec::with_capacity(
|
||||
headers
|
||||
.iter()
|
||||
.map(|(h, v)| h.len() + v.len() + ": \r\n".len())
|
||||
.map(|(h, v)| h.as_str().as_bytes().len() + v.len() + ": \r\n".len())
|
||||
.sum::<usize>()
|
||||
+ "\r\n\r\n".len()
|
||||
+ body.len(),
|
||||
);
|
||||
for (h, v) in headers {
|
||||
new_vec.extend_from_slice(h);
|
||||
new_vec.extend_from_slice(h.as_str().as_bytes());
|
||||
new_vec.extend_from_slice(b": ");
|
||||
new_vec.extend_from_slice(v);
|
||||
new_vec.extend_from_slice(b"\r\n");
|
||||
|
@ -315,18 +312,18 @@ impl PostFilter for ArchivedAtLink {
|
|||
log::error!("ArchivedAtLink: {}", err);
|
||||
})?;
|
||||
let (mut headers, body) = melib::email::parser::mail(&post.bytes).unwrap();
|
||||
headers.push((&b"Archived-At"[..], header_val.as_bytes()));
|
||||
headers.push((HeaderName::ARCHIVED_AT, header_val.as_bytes()));
|
||||
|
||||
let mut new_vec = Vec::with_capacity(
|
||||
headers
|
||||
.iter()
|
||||
.map(|(h, v)| h.len() + v.len() + ": \r\n".len())
|
||||
.map(|(h, v)| h.as_str().as_bytes().len() + v.len() + ": \r\n".len())
|
||||
.sum::<usize>()
|
||||
+ "\r\n\r\n".len()
|
||||
+ body.len(),
|
||||
);
|
||||
for (h, v) in headers {
|
||||
new_vec.extend_from_slice(h);
|
||||
new_vec.extend_from_slice(h.as_str().as_bytes());
|
||||
new_vec.extend_from_slice(b": ");
|
||||
new_vec.extend_from_slice(v);
|
||||
new_vec.extend_from_slice(b"\r\n");
|
||||
|
|
|
@ -371,7 +371,7 @@ impl MailingList {
|
|||
if let Some(val) = val {
|
||||
draft
|
||||
.headers
|
||||
.insert(melib::HeaderName::new_unchecked(hdr), val);
|
||||
.insert(melib::HeaderName::try_from(hdr).unwrap(), val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,9 +46,9 @@ impl Connection {
|
|||
let datetime: std::borrow::Cow<'_, str> = if !env.date.is_empty() {
|
||||
env.date.as_str().into()
|
||||
} else {
|
||||
melib::datetime::timestamp_to_string(
|
||||
melib::utils::datetime::timestamp_to_string(
|
||||
env.timestamp,
|
||||
Some(melib::datetime::RFC822_DATE),
|
||||
Some(melib::utils::datetime::formats::RFC822_DATE),
|
||||
true,
|
||||
)
|
||||
.into()
|
||||
|
@ -710,15 +710,14 @@ impl Connection {
|
|||
})?;
|
||||
|
||||
let mut draft = templ.render(context)?;
|
||||
draft.headers.insert(
|
||||
melib::HeaderName::new_unchecked("From"),
|
||||
list.request_subaddr(),
|
||||
);
|
||||
draft
|
||||
.headers
|
||||
.insert(melib::HeaderName::FROM, list.request_subaddr());
|
||||
for addr in recipients {
|
||||
let mut draft = draft.clone();
|
||||
draft
|
||||
.headers
|
||||
.insert(melib::HeaderName::new_unchecked("To"), addr.to_string());
|
||||
.insert(melib::HeaderName::TO, addr.to_string());
|
||||
list.insert_headers(
|
||||
&mut draft,
|
||||
post_policy.as_deref(),
|
||||
|
|
|
@ -83,7 +83,7 @@ impl Template {
|
|||
};
|
||||
if let Some(ref subject) = self.subject {
|
||||
draft.headers.insert(
|
||||
HeaderName::new_unchecked("Subject"),
|
||||
HeaderName::SUBJECT,
|
||||
env.render_named_str("subject", subject, &context)?,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -309,7 +309,7 @@ pub fn thread(
|
|||
let env_lock = envelopes.read().unwrap();
|
||||
let thread = threads.envelope_to_thread[&root_env_hash];
|
||||
let mut ret = vec![];
|
||||
for (depth, t) in threads.thread_group_iter(thread) {
|
||||
for (depth, t) in threads.thread_iter(thread) {
|
||||
let hash = threads.thread_nodes[&t].message.unwrap();
|
||||
ret.push(ThreadEntry {
|
||||
hash,
|
||||
|
|
Loading…
Reference in New Issue