diff --git a/deltachat-rpc-client/pyproject.toml b/deltachat-rpc-client/pyproject.toml index 8bde236a5..629ebb1ef 100644 --- a/deltachat-rpc-client/pyproject.toml +++ b/deltachat-rpc-client/pyproject.toml @@ -6,8 +6,7 @@ build-backend = "setuptools.build_meta" name = "deltachat-rpc-client" description = "Python client for Delta Chat core JSON-RPC interface" dependencies = [ - "aiohttp", - "aiodns" + "aiohttp" ] classifiers = [ "Development Status :: 5 - Production/Stable", diff --git a/scripts/create-provider-data-rs.py b/scripts/create-provider-data-rs.py index 824e3354d..100a34fe6 100755 --- a/scripts/create-provider-data-rs.py +++ b/scripts/create-provider-data-rs.py @@ -62,7 +62,7 @@ def process_opt(data): def process_config_defaults(data): if not "config_defaults" in data: return "None" - defaults = "Some(vec![\n" + defaults = "Some(&[\n" config_defaults = data.get("config_defaults", "") for key in config_defaults: value = str(config_defaults[key]) @@ -162,7 +162,7 @@ def process_data(data, file): provider += ' before_login_hint: "' + before_login_hint + '",\n' provider += ' after_login_hint: "' + after_login_hint + '",\n' provider += ' overview_page: "' + file2url(file) + '",\n' - provider += " server: vec![\n" + server + " ],\n" + provider += " server: &[\n" + server + " ],\n" provider += " opt: " + opt + ",\n" provider += " config_defaults: " + config_defaults + ",\n" provider += " oauth2_authorizer: " + oauth2 + ",\n" diff --git a/src/chat.rs b/src/chat.rs index ef30b7393..1369d840c 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -1326,11 +1326,11 @@ impl Chat { pub async fn get_profile_image(&self, context: &Context) -> Result> { if let Some(image_rel) = self.param.get(Param::ProfileImage) { if !image_rel.is_empty() { - return Ok(Some(get_abs_path(context, image_rel))); + return Ok(Some(get_abs_path(context, Path::new(&image_rel)))); } } else if self.id.is_archived_link() { if let Ok(image_rel) = get_archive_icon(context).await { - return Ok(Some(get_abs_path(context, image_rel))); + return Ok(Some(get_abs_path(context, Path::new(&image_rel)))); } } else if self.typ == Chattype::Single { let contacts = get_chat_contacts(context, self.id).await?; @@ -1341,7 +1341,7 @@ impl Chat { } } else if self.typ == Chattype::Broadcast { if let Ok(image_rel) = get_broadcast_icon(context).await { - return Ok(Some(get_abs_path(context, image_rel))); + return Ok(Some(get_abs_path(context, Path::new(&image_rel)))); } } Ok(None) diff --git a/src/config.rs b/src/config.rs index 2e243ba53..65c1a20c0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,6 +1,7 @@ //! # Key-value configuration management. use std::env; +use std::path::Path; use std::str::FromStr; use anyhow::{ensure, Context as _, Result}; @@ -339,7 +340,11 @@ impl Context { let value = match key { Config::Selfavatar => { let rel_path = self.sql.get_raw_config(key.as_ref()).await?; - rel_path.map(|p| get_abs_path(self, p).to_string_lossy().into_owned()) + rel_path.map(|p| { + get_abs_path(self, Path::new(&p)) + .to_string_lossy() + .into_owned() + }) } Config::SysVersion => Some((*DC_VERSION_STR).clone()), Config::SysMsgsizeMaxRecommended => Some(format!("{RECOMMENDED_FILE_SIZE}")), diff --git a/src/configure.rs b/src/configure.rs index bb63c83d9..378268800 100644 --- a/src/configure.rs +++ b/src/configure.rs @@ -130,7 +130,7 @@ async fn on_configure_completed( old_addr: Option, ) -> Result<()> { if let Some(provider) = param.provider { - if let Some(config_defaults) = &provider.config_defaults { + if let Some(config_defaults) = provider.config_defaults { for def in config_defaults { if !context.config_exists(def.key).await? { info!(context, "apply config_defaults {}={}", def.key, def.value); diff --git a/src/contact.rs b/src/contact.rs index 2998ae1ad..a5f172a9b 100644 --- a/src/contact.rs +++ b/src/contact.rs @@ -5,7 +5,7 @@ use std::collections::BinaryHeap; use std::convert::{TryFrom, TryInto}; use std::fmt; use std::ops::Deref; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::time::{SystemTime, UNIX_EPOCH}; use anyhow::{bail, ensure, Context as _, Result}; @@ -1186,7 +1186,7 @@ impl Contact { } } else if let Some(image_rel) = self.param.get(Param::ProfileImage) { if !image_rel.is_empty() { - return Ok(Some(get_abs_path(context, image_rel))); + return Ok(Some(get_abs_path(context, Path::new(image_rel)))); } } Ok(None) diff --git a/src/provider.rs b/src/provider.rs index 8035acd88..1df329c1d 100644 --- a/src/provider.rs +++ b/src/provider.rs @@ -123,10 +123,10 @@ pub struct Provider { pub overview_page: &'static str, /// List of provider servers. - pub server: Vec, + pub server: &'static [Server], /// Default configuration values to set when provider is configured. - pub config_defaults: Option>, + pub config_defaults: Option<&'static [ConfigDefault]>, /// Type of OAuth 2 authorization if provider supports it. pub oauth2_authorizer: Option, diff --git a/src/provider/data.rs b/src/provider/data.rs index 32b1ff465..fedd5630f 100644 --- a/src/provider/data.rs +++ b/src/provider/data.rs @@ -17,7 +17,7 @@ static P_163: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/163", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -45,7 +45,7 @@ static P_AKTIVIX_ORG: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/aktivix-org", - server: vec![ + server: &[ Server { protocol: Imap, socket: Starttls, @@ -74,7 +74,7 @@ static P_AOL: Lazy = Lazy::new(|| { before_login_hint: "To log in to AOL with Delta Chat, you need to set up an app password in the AOL web interface.", after_login_hint: "", overview_page: "https://providers.delta.chat/aol", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.aol.com", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.aol.com", port: 465, username_pattern: Email }, ], @@ -91,7 +91,7 @@ static P_ARCOR_DE: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/arcor-de", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -119,7 +119,7 @@ static P_AUTISTICI_ORG: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/autistici-org", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -147,7 +147,7 @@ static P_BLINDZELN_ORG: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/blindzeln-org", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -175,7 +175,7 @@ static P_BLUEWIN_CH: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/bluewin-ch", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -203,7 +203,7 @@ static P_BUZON_UY: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/buzon-uy", - server: vec![ + server: &[ Server { protocol: Imap, socket: Starttls, @@ -231,7 +231,7 @@ static P_CHELLO_AT: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/chello-at", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -259,7 +259,7 @@ static P_COMCAST: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/comcast", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -272,7 +272,7 @@ static P_DISMAIL_DE: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/dismail-de", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -285,7 +285,7 @@ static P_DISROOT: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/disroot", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -313,7 +313,7 @@ static P_E_EMAIL: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/e-email", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -341,7 +341,7 @@ static P_ESPIV_NET: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/espiv-net", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -355,7 +355,7 @@ static P_EXAMPLE_COM: Lazy = Lazy::new(|| { before_login_hint: "Hush this provider doesn't exist!", after_login_hint: "This provider doesn't really exist, so you can't use it :/ If you need an email provider for Delta Chat, take a look at providers.delta.chat!", overview_page: "https://providers.delta.chat/example-com", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.example.com", port: 1337, username_pattern: Email }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.example.com", port: 1337, username_pattern: Email }, ], @@ -373,7 +373,7 @@ static P_FASTMAIL: Lazy = Lazy::new(|| Provider { "You must create an app-specific password for Delta Chat before you can log in.", after_login_hint: "", overview_page: "https://providers.delta.chat/fastmail", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -402,7 +402,7 @@ static P_FIREMAIL_DE: Lazy = Lazy::new(|| { before_login_hint: "Firemail erlaubt nur bei bezahlten Accounts den vollen Zugriff auf das E-Mail-Protokoll. Wenn Sie nicht für Firemail bezahlen, verwenden Sie bitte einen anderen E-Mail-Anbieter.", after_login_hint: "Leider schränkt Firemail die maximale Gruppengröße ein. Je nach Bezahlmodell sind nur 5 bis 30 Gruppenmitglieder erlaubt.", overview_page: "https://providers.delta.chat/firemail-de", - server: vec![ + server: &[ ], opt: Default::default(), config_defaults: None, @@ -417,9 +417,9 @@ static P_FIVE_CHAT: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/five-chat", - server: vec![], + server: &[], opt: Default::default(), - config_defaults: Some(vec![ + config_defaults: Some(&[ ConfigDefault { key: Config::BccSelf, value: "1", @@ -444,7 +444,7 @@ static P_FREENET_DE: Lazy = Lazy::new(|| { before_login_hint: "Um deine freenet.de E-Mail-Adresse mit Delta Chat zu benutzen, musst du erst auf der freenet.de-Webseite \"POP3/IMAP/SMTP\" aktivieren.", after_login_hint: "", overview_page: "https://providers.delta.chat/freenet-de", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "mx.freenet.de", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Starttls, hostname: "mx.freenet.de", port: 587, username_pattern: Email }, ], @@ -462,7 +462,7 @@ static P_GMAIL: Lazy = Lazy::new(|| { before_login_hint: "For Gmail accounts, you need to create an app-password if you have \"2-Step Verification\" enabled. If this setting is not available, you need to enable \"less secure apps\".", after_login_hint: "", overview_page: "https://providers.delta.chat/gmail", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.gmail.com", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.gmail.com", port: 465, username_pattern: Email }, ], @@ -482,7 +482,7 @@ static P_GMX_NET: Lazy = Lazy::new(|| Provider { before_login_hint: "You must allow IMAP access to your account before you can login.", after_login_hint: "", overview_page: "https://providers.delta.chat/gmx-net", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -517,12 +517,12 @@ static P_HERMES_RADIO: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/hermes-radio", - server: vec![], + server: &[], opt: ProviderOptions { strict_tls: false, ..Default::default() }, - config_defaults: Some(vec![ + config_defaults: Some(&[ ConfigDefault { key: Config::MdnsEnabled, value: "0", @@ -547,7 +547,7 @@ static P_HEY_COM: Lazy = Lazy::new(|| { before_login_hint: "hey.com does not offer the standard IMAP e-mail protocol, so you cannot log in with Delta Chat to hey.com.", after_login_hint: "", overview_page: "https://providers.delta.chat/hey-com", - server: vec![ + server: &[ ], opt: Default::default(), config_defaults: None, @@ -562,7 +562,7 @@ static P_I_UA: Lazy = Lazy::new(|| Provider { before_login_hint: "Протокол IMAP не предоставляется и не планируется.", after_login_hint: "", overview_page: "https://providers.delta.chat/i-ua", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -575,7 +575,7 @@ static P_I3_NET: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/i3-net", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -588,7 +588,7 @@ static P_ICLOUD: Lazy = Lazy::new(|| Provider { before_login_hint: "You must create an app-specific password for Delta Chat before login.", after_login_hint: "", overview_page: "https://providers.delta.chat/icloud", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -616,7 +616,7 @@ static P_INFOMANIAK_COM: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/infomaniak-com", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -647,7 +647,7 @@ static P_KOLST_COM: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/kolst-com", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -660,7 +660,7 @@ static P_KONTENT_COM: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/kontent-com", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -673,7 +673,7 @@ static P_MAIL_DE: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/mail-de", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -702,7 +702,7 @@ static P_MAIL_RU: Lazy = Lazy::new(|| { before_login_hint: "Вам необходимо сгенерировать \"пароль для внешнего приложения\" в веб-интерфейсе mail.ru, чтобы mail.ru работал с Delta Chat.", after_login_hint: "", overview_page: "https://providers.delta.chat/mail-ru", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.mail.ru", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.mail.ru", port: 465, username_pattern: Email }, ], @@ -719,7 +719,7 @@ static P_MAIL2TOR: Lazy = Lazy::new(|| Provider { before_login_hint: "Tor is needed to connect to the email servers.", after_login_hint: "", overview_page: "https://providers.delta.chat/mail2tor", - server: vec![ + server: &[ Server { protocol: Imap, socket: Plain, @@ -747,7 +747,7 @@ static P_MAILBOX_ORG: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/mailbox-org", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -775,7 +775,7 @@ static P_MAILO_COM: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/mailo-com", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -803,7 +803,7 @@ static P_NAUTA_CU: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/nauta-cu", - server: vec![ + server: &[ Server { protocol: Imap, socket: Starttls, @@ -824,7 +824,7 @@ static P_NAUTA_CU: Lazy = Lazy::new(|| Provider { strict_tls: false, ..Default::default() }, - config_defaults: Some(vec![ + config_defaults: Some(&[ ConfigDefault { key: Config::DeleteServerAfter, value: "1", @@ -860,7 +860,7 @@ static P_NAVER: Lazy = Lazy::new(|| Provider { before_login_hint: "Manually enabling IMAP/SMTP is required.", after_login_hint: "", overview_page: "https://providers.delta.chat/naver", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -888,7 +888,7 @@ static P_NUBO_COOP: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/nubo-coop", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -916,7 +916,7 @@ static P_OUTLOOK_COM: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/outlook-com", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -944,7 +944,7 @@ static P_OUVATON_COOP: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/ouvaton-coop", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -972,7 +972,7 @@ static P_POSTEO: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/posteo", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1015,7 +1015,7 @@ static P_PROTONMAIL: Lazy = Lazy::new(|| { before_login_hint: "Protonmail does not offer the standard IMAP e-mail protocol, so you cannot log in with Delta Chat to Protonmail.", after_login_hint: "To use Delta Chat with Protonmail, the IMAP bridge must be running in the background. If you have connectivity issues, double check whether it works as expected.", overview_page: "https://providers.delta.chat/protonmail", - server: vec![ + server: &[ ], opt: Default::default(), config_defaults: None, @@ -1031,7 +1031,7 @@ static P_QQ: Lazy = Lazy::new(|| { before_login_hint: "Manually enabling IMAP/SMTP and creating an app-specific password for Delta Chat are required.", after_login_hint: "", overview_page: "https://providers.delta.chat/qq", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.qq.com", port: 993, username_pattern: Emaillocalpart }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.qq.com", port: 465, username_pattern: Email }, ], @@ -1048,7 +1048,7 @@ static P_RISEUP_NET: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/riseup-net", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1076,7 +1076,7 @@ static P_ROGERS_COM: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/rogers-com", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -1089,7 +1089,7 @@ static P_SONIC: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/sonic", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -1102,7 +1102,7 @@ static P_SYSTEMAUSFALL_ORG: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/systemausfall-org", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1130,7 +1130,7 @@ static P_SYSTEMLI_ORG: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/systemli-org", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1159,7 +1159,7 @@ static P_T_ONLINE: Lazy = Lazy::new(|| { before_login_hint: "To use Delta Chat with a T-Online email address, you need to create an app password in the web interface.", after_login_hint: "", overview_page: "https://providers.delta.chat/t-online", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "secureimap.t-online.de", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "securesmtp.t-online.de", port: 465, username_pattern: Email }, ], @@ -1176,7 +1176,7 @@ static P_TESTRUN: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/testrun", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1200,7 +1200,7 @@ static P_TESTRUN: Lazy = Lazy::new(|| Provider { }, ], opt: Default::default(), - config_defaults: Some(vec![ + config_defaults: Some(&[ ConfigDefault { key: Config::BccSelf, value: "1", @@ -1224,7 +1224,7 @@ static P_TISCALI_IT: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/tiscali-it", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1253,7 +1253,7 @@ static P_TUTANOTA: Lazy = Lazy::new(|| { before_login_hint: "Tutanota does not offer the standard IMAP e-mail protocol, so you cannot log in with Delta Chat to Tutanota.", after_login_hint: "", overview_page: "https://providers.delta.chat/tutanota", - server: vec![ + server: &[ ], opt: Default::default(), config_defaults: None, @@ -1268,7 +1268,7 @@ static P_UKR_NET: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/ukr-net", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -1281,7 +1281,7 @@ static P_UNDERNET_UY: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/undernet-uy", - server: vec![ + server: &[ Server { protocol: Imap, socket: Starttls, @@ -1309,7 +1309,7 @@ static P_VFEMAIL: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/vfemail", - server: vec![], + server: &[], opt: Default::default(), config_defaults: None, oauth2_authorizer: None, @@ -1322,7 +1322,7 @@ static P_VIVALDI: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/vivaldi", - server: vec![ + server: &[ Server { protocol: Imap, socket: Starttls, @@ -1350,7 +1350,7 @@ static P_VODAFONE_DE: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/vodafone-de", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1379,7 +1379,7 @@ static P_WEB_DE: Lazy = Lazy::new(|| { before_login_hint: "You must allow IMAP access to your account before you can login.", after_login_hint: "Note: if you have your web.de spam settings too strict, you won't receive contact requests from new people. If you want to receive contact requests, you should disable the \"3-Wege-Spamschutz\" in the web.de settings. Read how: https://hilfe.web.de/email/spam-und-viren/spamschutz-einstellungen.html", overview_page: "https://providers.delta.chat/web-de", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.web.de", port: 993, username_pattern: Emaillocalpart }, Server { protocol: Imap, socket: Starttls, hostname: "imap.web.de", port: 143, username_pattern: Emaillocalpart }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.web.de", port: 587, username_pattern: Emaillocalpart }, @@ -1398,7 +1398,7 @@ static P_YAHOO: Lazy = Lazy::new(|| { before_login_hint: "To use Delta Chat with your Yahoo email address you have to create an \"App-Password\" in the account security screen.", after_login_hint: "", overview_page: "https://providers.delta.chat/yahoo", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, hostname: "imap.mail.yahoo.com", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.mail.yahoo.com", port: 465, username_pattern: Email }, ], @@ -1415,7 +1415,7 @@ static P_YANDEX_RU: Lazy = Lazy::new(|| Provider { before_login_hint: "For Yandex accounts, you have to set IMAP protocol option turned on.", after_login_hint: "", overview_page: "https://providers.delta.chat/yandex-ru", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1444,12 +1444,12 @@ static P_YGGMAIL: Lazy = Lazy::new(|| { before_login_hint: "An Yggmail companion app needs to be installed on your device to access the Yggmail network.", after_login_hint: "Make sure, the Yggmail companion app runs whenever you want to use this account. Note, that you usually cannot write from @yggmail addresses to normal e-mail-addresses (as @gmx.net). However, you can create another account in the normal e-mail-network for this purpose.", overview_page: "https://providers.delta.chat/yggmail", - server: vec![ + server: &[ Server { protocol: Imap, socket: Plain, hostname: "localhost", port: 1143, username_pattern: Email }, Server { protocol: Smtp, socket: Plain, hostname: "localhost", port: 1025, username_pattern: Email }, ], opt: Default::default(), - config_defaults: Some(vec![ + config_defaults: Some(&[ ConfigDefault { key: Config::MvboxMove, value: "0" }, ]), oauth2_authorizer: None, @@ -1463,7 +1463,7 @@ static P_ZIGGO_NL: Lazy = Lazy::new(|| Provider { before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/ziggo-nl", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, @@ -1491,7 +1491,7 @@ static P_ZOHO: Lazy = Lazy::new(|| Provider { before_login_hint: "To use Zoho Mail, you have to turn on IMAP in the Zoho Mail backend.", after_login_hint: "", overview_page: "https://providers.delta.chat/zoho", - server: vec![ + server: &[ Server { protocol: Imap, socket: Ssl, diff --git a/src/tools.rs b/src/tools.rs index b0ba5d6f7..18754a835 100644 --- a/src/tools.rs +++ b/src/tools.rs @@ -323,17 +323,16 @@ pub fn get_filemeta(buf: &[u8]) -> Result<(u32, u32)> { /// /// If `path` starts with "$BLOBDIR", replaces it with the blobdir path. /// Otherwise, returns path as is. -pub(crate) fn get_abs_path(context: &Context, path: impl AsRef) -> PathBuf { - let p: &Path = path.as_ref(); - if let Ok(p) = p.strip_prefix("$BLOBDIR") { +pub(crate) fn get_abs_path(context: &Context, path: &Path) -> PathBuf { + if let Ok(p) = path.strip_prefix("$BLOBDIR") { context.get_blobdir().join(p) } else { - p.into() + path.into() } } pub(crate) async fn get_filebytes(context: &Context, path: impl AsRef) -> Result { - let path_abs = get_abs_path(context, &path); + let path_abs = get_abs_path(context, path.as_ref()); let meta = fs::metadata(&path_abs).await?; Ok(meta.len()) } @@ -377,7 +376,7 @@ pub(crate) async fn create_folder( context: &Context, path: impl AsRef, ) -> Result<(), io::Error> { - let path_abs = get_abs_path(context, &path); + let path_abs = get_abs_path(context, path.as_ref()); if !path_abs.exists() { match fs::create_dir_all(path_abs).await { Ok(_) => Ok(()), @@ -402,7 +401,7 @@ pub(crate) async fn write_file( path: impl AsRef, buf: &[u8], ) -> Result<(), io::Error> { - let path_abs = get_abs_path(context, &path); + let path_abs = get_abs_path(context, path.as_ref()); fs::write(&path_abs, buf).await.map_err(|err| { warn!( context, @@ -417,7 +416,7 @@ pub(crate) async fn write_file( /// Reads the file and returns its context as a byte vector. pub async fn read_file(context: &Context, path: impl AsRef) -> Result> { - let path_abs = get_abs_path(context, &path); + let path_abs = get_abs_path(context, path.as_ref()); match fs::read(&path_abs).await { Ok(bytes) => Ok(bytes), @@ -434,7 +433,7 @@ pub async fn read_file(context: &Context, path: impl AsRef) -> Result) -> Result { - let path_abs = get_abs_path(context, &path); + let path_abs = get_abs_path(context, path.as_ref()); match fs::File::open(&path_abs).await { Ok(bytes) => Ok(bytes), @@ -450,12 +449,8 @@ pub async fn open_file(context: &Context, path: impl AsRef) -> Result>( - context: &Context, - path: P, -) -> Result { - let p: PathBuf = path.as_ref().into(); - let path_abs = get_abs_path(context, p); +pub fn open_file_std(context: &Context, path: impl AsRef) -> Result { + let path_abs = get_abs_path(context, path.as_ref()); match std::fs::File::open(path_abs) { Ok(bytes) => Ok(bytes),