mirror of
https://github.com/chatmail/core.git
synced 2026-05-19 14:56:33 +03:00
Move read_autoconf_file to its own module
This commit is contained in:
@@ -10,7 +10,7 @@ use crate::constants::*;
|
|||||||
use crate::context::Context;
|
use crate::context::Context;
|
||||||
use crate::login_param::LoginParam;
|
use crate::login_param::LoginParam;
|
||||||
|
|
||||||
use super::read_autoconf_file;
|
use super::read_url::read_url;
|
||||||
|
|
||||||
#[derive(Debug, Fail)]
|
#[derive(Debug, Fail)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
@@ -119,7 +119,7 @@ pub fn moz_autoconfigure(
|
|||||||
url: &str,
|
url: &str,
|
||||||
param_in: &LoginParam,
|
param_in: &LoginParam,
|
||||||
) -> Option<LoginParam> {
|
) -> Option<LoginParam> {
|
||||||
let xml_raw = read_autoconf_file(context, url)?;
|
let xml_raw = read_url(context, url).ok()?;
|
||||||
|
|
||||||
match parse_xml(¶m_in.addr, &xml_raw) {
|
match parse_xml(¶m_in.addr, &xml_raw) {
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ use crate::constants::*;
|
|||||||
use crate::context::Context;
|
use crate::context::Context;
|
||||||
use crate::login_param::LoginParam;
|
use crate::login_param::LoginParam;
|
||||||
|
|
||||||
use super::read_autoconf_file;
|
use super::read_url::read_url;
|
||||||
|
|
||||||
#[derive(Debug, Fail)]
|
#[derive(Debug, Fail)]
|
||||||
enum Error {
|
pub enum Error {
|
||||||
#[fail(display = "XML error at position {}", position)]
|
#[fail(display = "XML error at position {}", position)]
|
||||||
InvalidXml {
|
InvalidXml {
|
||||||
position: usize,
|
position: usize,
|
||||||
@@ -24,6 +24,8 @@ enum Error {
|
|||||||
IncompleteAutoconfig(LoginParam),
|
IncompleteAutoconfig(LoginParam),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
||||||
struct OutlookAutodiscover {
|
struct OutlookAutodiscover {
|
||||||
pub out: LoginParam,
|
pub out: LoginParam,
|
||||||
pub out_imap_set: bool,
|
pub out_imap_set: bool,
|
||||||
@@ -133,9 +135,9 @@ pub fn outlk_autodiscover(
|
|||||||
_param_in: &LoginParam,
|
_param_in: &LoginParam,
|
||||||
) -> Option<LoginParam> {
|
) -> Option<LoginParam> {
|
||||||
let mut url = url.to_string();
|
let mut url = url.to_string();
|
||||||
/* Follow up to 10 xml-redirects (http-redirects are followed in read_autoconf_file() */
|
/* Follow up to 10 xml-redirects (http-redirects are followed in read_url() */
|
||||||
for _i in 0..10 {
|
for _i in 0..10 {
|
||||||
if let Some(xml_raw) = read_autoconf_file(context, &url) {
|
if let Ok(xml_raw) = read_url(context, &url) {
|
||||||
match parse_xml(&xml_raw) {
|
match parse_xml(&xml_raw) {
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
warn!(context, "{}", err);
|
warn!(context, "{}", err);
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
//! Email accounts autoconfiguration process module
|
//! Email accounts autoconfiguration process module
|
||||||
|
|
||||||
|
mod auto_mozilla;
|
||||||
|
mod auto_outlook;
|
||||||
|
mod read_url;
|
||||||
|
|
||||||
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
|
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
|
||||||
|
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
@@ -12,10 +16,8 @@ use crate::login_param::LoginParam;
|
|||||||
use crate::oauth2::*;
|
use crate::oauth2::*;
|
||||||
use crate::param::Params;
|
use crate::param::Params;
|
||||||
|
|
||||||
mod auto_outlook;
|
|
||||||
use auto_outlook::outlk_autodiscover;
|
|
||||||
mod auto_mozilla;
|
|
||||||
use auto_mozilla::moz_autoconfigure;
|
use auto_mozilla::moz_autoconfigure;
|
||||||
|
use auto_outlook::outlk_autodiscover;
|
||||||
|
|
||||||
macro_rules! progress {
|
macro_rules! progress {
|
||||||
($context:tt, $progress:expr) => {
|
($context:tt, $progress:expr) => {
|
||||||
@@ -566,23 +568,6 @@ fn try_smtp_one_param(context: &Context, param: &LoginParam) -> Option<bool> {
|
|||||||
* Configure a Context
|
* Configure a Context
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
pub fn read_autoconf_file(context: &Context, url: &str) -> Option<String> {
|
|
||||||
info!(context, "Testing {} ...", url);
|
|
||||||
|
|
||||||
match reqwest::Client::new()
|
|
||||||
.get(url)
|
|
||||||
.send()
|
|
||||||
.and_then(|mut res| res.text())
|
|
||||||
{
|
|
||||||
Ok(res) => Some(res),
|
|
||||||
Err(_err) => {
|
|
||||||
info!(context, "Can\'t read file.",);
|
|
||||||
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
|
|||||||
27
src/configure/read_url.rs
Normal file
27
src/configure/read_url.rs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
use crate::context::Context;
|
||||||
|
use failure::Fail;
|
||||||
|
|
||||||
|
#[derive(Debug, Fail)]
|
||||||
|
pub enum Error {
|
||||||
|
#[fail(display = "URL request error")]
|
||||||
|
GetError(#[cause] reqwest::Error),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type Result<T> = std::result::Result<T, Error>;
|
||||||
|
|
||||||
|
pub fn read_url(context: &Context, url: &str) -> Result<String> {
|
||||||
|
info!(context, "Requesting URL {}", url);
|
||||||
|
|
||||||
|
match reqwest::Client::new()
|
||||||
|
.get(url)
|
||||||
|
.send()
|
||||||
|
.and_then(|mut res| res.text())
|
||||||
|
{
|
||||||
|
Ok(res) => Ok(res),
|
||||||
|
Err(err) => {
|
||||||
|
info!(context, "Can\'t read URL {}", url);
|
||||||
|
|
||||||
|
Err(Error::GetError(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user