-use log::debug;
-
use super::Middleware;
/// `MailDrop` can't find folders to sync because it implements `IMAPv3` and
// We'll need to convert the LIST to a FIND
self.tags.push(tag.trim().to_string());
let replacement = format!("{} LIST \"\" \"*\"\r\n", tag.trim());
- let debug_str = replacement
- .replace('\n', "\\n")
- .replace('\r', "\\r")
- .replace('\t', "\\t");
- debug!("### {debug_str}");
return replacement.into_bytes();
}
}
// Transform IMAPv4 "* LIST" lines to IMAPv3 "* MAILBOX"
if line.starts_with("* LIST") {
- if let Some(last_slash_pos) = line.rfind('/') {
- let mailbox_name = line[(last_slash_pos + 1)..].trim();
- return Some(format!("* MAILBOX {mailbox_name}\r"));
+ if let Some(last_slash_pos) = line.rfind("\"/\"") {
+ let mailbox_name = line[(last_slash_pos + 3)..].replace('"', "");
+ return Some(format!("* MAILBOX {}\r", mailbox_name.trim()));
+ }
+ }
+
+ if line.contains("OK") {
+ if let Some(tag) = line.split("OK").next() {
+ return Some(format!("{} OK MAILBOX Completed.\r", tag.trim()).to_string());
}
}
})
.collect();
- let replacement = lines.join("\n");
- let debug_str = replacement
- .replace('\n', "\\n")
- .replace('\r', "\\r")
- .replace('\t', "\\t");
- debug!("### {debug_str}");
-
- replacement.into_bytes()
+ format!("{}\n", lines.join("\n")).into_bytes()
}
}