mirror of
https://github.com/chatmail/core.git
synced 2026-04-27 02:16:29 +03:00
Resultify moz_autoconfigure
This commit is contained in:
@@ -26,10 +26,19 @@ pub enum Error {
|
|||||||
|
|
||||||
#[fail(display = "Bad or incomplete autoconfig")]
|
#[fail(display = "Bad or incomplete autoconfig")]
|
||||||
IncompleteAutoconfig(LoginParam),
|
IncompleteAutoconfig(LoginParam),
|
||||||
|
|
||||||
|
#[fail(display = "Failed to get URL {}", _0)]
|
||||||
|
ReadUrlError(#[cause] super::read_url::Error),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type Result<T> = std::result::Result<T, Error>;
|
pub type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
||||||
|
impl From<super::read_url::Error> for Error {
|
||||||
|
fn from(err: super::read_url::Error) -> Error {
|
||||||
|
Error::ReadUrlError(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct MozAutoconfigure<'a> {
|
struct MozAutoconfigure<'a> {
|
||||||
pub in_emailaddr: &'a str,
|
pub in_emailaddr: &'a str,
|
||||||
@@ -118,16 +127,16 @@ pub fn moz_autoconfigure(
|
|||||||
context: &Context,
|
context: &Context,
|
||||||
url: &str,
|
url: &str,
|
||||||
param_in: &LoginParam,
|
param_in: &LoginParam,
|
||||||
) -> Option<LoginParam> {
|
) -> Result<LoginParam> {
|
||||||
let xml_raw = read_url(context, url).ok()?;
|
let xml_raw = read_url(context, url)?;
|
||||||
|
|
||||||
match parse_xml(¶m_in.addr, &xml_raw) {
|
parse_xml(¶m_in.addr, &xml_raw).map_err(|err| {
|
||||||
Err(err) => {
|
warn!(
|
||||||
warn!(context, "{}", err);
|
context,
|
||||||
None
|
"Failed to parse Thunderbird autoconfiguration XML: {}", err
|
||||||
}
|
);
|
||||||
Ok(lp) => Some(lp),
|
err.into()
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn moz_autoconfigure_text_cb<B: std::io::BufRead>(
|
fn moz_autoconfigure_text_cb<B: std::io::BufRead>(
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ pub fn JobConfigureImap(context: &Context) {
|
|||||||
"https://autoconfig.{}/mail/config-v1.1.xml?emailaddress={}",
|
"https://autoconfig.{}/mail/config-v1.1.xml?emailaddress={}",
|
||||||
param_domain, param_addr_urlencoded
|
param_domain, param_addr_urlencoded
|
||||||
);
|
);
|
||||||
param_autoconfig = moz_autoconfigure(context, &url, ¶m);
|
param_autoconfig = moz_autoconfigure(context, &url, ¶m).ok();
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@@ -180,7 +180,7 @@ pub fn JobConfigureImap(context: &Context) {
|
|||||||
"https://{}/.well-known/autoconfig/mail/config-v1.1.xml?emailaddress={}",
|
"https://{}/.well-known/autoconfig/mail/config-v1.1.xml?emailaddress={}",
|
||||||
param_domain, param_addr_urlencoded
|
param_domain, param_addr_urlencoded
|
||||||
);
|
);
|
||||||
param_autoconfig = moz_autoconfigure(context, &url, ¶m);
|
param_autoconfig = moz_autoconfigure(context, &url, ¶m).ok();
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@@ -216,7 +216,7 @@ pub fn JobConfigureImap(context: &Context) {
|
|||||||
"http://autoconfig.{}/mail/config-v1.1.xml?emailaddress={}",
|
"http://autoconfig.{}/mail/config-v1.1.xml?emailaddress={}",
|
||||||
param_domain, param_addr_urlencoded
|
param_domain, param_addr_urlencoded
|
||||||
);
|
);
|
||||||
param_autoconfig = moz_autoconfigure(context, &url, ¶m);
|
param_autoconfig = moz_autoconfigure(context, &url, ¶m).ok();
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@@ -228,7 +228,7 @@ pub fn JobConfigureImap(context: &Context) {
|
|||||||
"http://{}/.well-known/autoconfig/mail/config-v1.1.xml",
|
"http://{}/.well-known/autoconfig/mail/config-v1.1.xml",
|
||||||
param_domain
|
param_domain
|
||||||
);
|
);
|
||||||
param_autoconfig = moz_autoconfigure(context, &url, ¶m);
|
param_autoconfig = moz_autoconfigure(context, &url, ¶m).ok();
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
@@ -238,7 +238,7 @@ pub fn JobConfigureImap(context: &Context) {
|
|||||||
if param_autoconfig.is_none() {
|
if param_autoconfig.is_none() {
|
||||||
/* always SSL for Thunderbird's database */
|
/* always SSL for Thunderbird's database */
|
||||||
let url = format!("https://autoconfig.thunderbird.net/v1.1/{}", param_domain);
|
let url = format!("https://autoconfig.thunderbird.net/v1.1/{}", param_domain);
|
||||||
param_autoconfig = moz_autoconfigure(context, &url, ¶m);
|
param_autoconfig = moz_autoconfigure(context, &url, ¶m).ok();
|
||||||
}
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user