summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Korber <pilippkorber@gmail.com>2018-09-10 22:41:41 +0200
committerPhilipp Korber <pilippkorber@gmail.com>2018-09-10 22:41:41 +0200
commit53cafca7768d9e48f81102bc60aa4420be8aa9a9 (patch)
tree0290a273c08aee9b49c48818997e70ef0365b624
parentf02c8db8b96d2ca143f8a8c7e24961cd5dfcea47 (diff)
chore(deps) applied chages from upstream
-rw-r--r--src/error.rs28
-rw-r--r--src/lib.rs13
-rw-r--r--src/request.rs88
3 files changed, 87 insertions, 42 deletions
diff --git a/src/error.rs b/src/error.rs
index 8cc1c8e..17f76e5 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,8 +1,13 @@
//! Module containing all custom errors.
use std::{io as std_io};
-use new_tokio_smtp::error::{ConnectingFailed, LogicError, GeneralError};
+use new_tokio_smtp::error::{
+ ConnectingFailed,
+ LogicError, GeneralError
+};
+
use mail::error::MailError;
+use headers::error::HeaderValidationError;
/// Error used when sending a mail fails.
///
@@ -88,3 +93,24 @@ impl From<GeneralError> for MailSendError {
}
}
}
+
+
+#[derive(Debug, Fail)]
+pub enum OtherValidationError {
+
+ #[fail(display = "no To header was present")]
+ NoTo
+}
+
+impl From<OtherValidationError> for HeaderValidationError {
+
+ fn from(ove: OtherValidationError) -> Self {
+ HeaderValidationError::Custom(ove.into())
+ }
+}
+
+impl From<OtherValidationError> for MailError {
+ fn from(ove: OtherValidationError) -> Self {
+ MailError::from(HeaderValidationError::from(ove))
+ }
+} \ No newline at end of file
diff --git a/src/lib.rs b/src/lib.rs
index 6b510fc..278492f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -27,8 +27,10 @@
//! #[macro_use] extern crate mail_headers;
//!
//! use futures::Future;
-//! use mail_headers::*;
-//! use mail_headers::components::Domain;
+//! use mail_headers::{
+//! headers::*,
+//! header_components::Domain
+//! };
//! use mail_types::{Mail, default_impl::simple_context};
//! use mail_smtp::{self as smtp, ConnectionConfig};
//!
@@ -39,12 +41,12 @@
//! let ctx = simple_context::new(Domain::from_unchecked("example.com".to_owned()), "asdkds".parse().unwrap())
//! .unwrap();
//!
-//! let mut mail = Mail::plain_text("Some body").unwrap();
-//! mail.set_headers(headers! {
+//! let mut mail = Mail::plain_text("Some body");
+//! mail.insert_headers(headers! {
//! _From: ["bla@example.com"],
//! _To: ["blub@example.com"],
//! Subject: "Some Mail"
-//! }.unwrap()).unwrap();
+//! }.unwrap());
//!
//! // don't use unencrypted con for anything but testing and
//! // simplified examples
@@ -60,6 +62,7 @@ extern crate futures;
extern crate new_tokio_smtp;
extern crate mail_types as mail;
extern crate mail_common;
+#[cfg_attr(test, macro_use)]
extern crate mail_headers as headers;
#[macro_use]
extern crate failure;
diff --git a/src/request.rs b/src/request.rs
index b6191f6..d7b05d4 100644
--- a/src/request.rs
+++ b/src/request.rs
@@ -6,14 +6,22 @@ use new_tokio_smtp::send_mail::{
EnvelopData
};
-use mail_common::MailType;
-use mail_common::encoder::{EncodingBuffer, EncodableInHeader};
-use mail_common::error::EncodingError;
-use headers::{Sender, _From, _To};
-use headers::components::Mailbox;
-use headers::error::BuildInValidationError;
-use mail::Mail;
-use mail::error::MailError;
+use mail_common::{
+ MailType,
+ encoder::{EncodingBuffer, EncodableInHeader},
+ error::EncodingError
+};
+use headers::{
+ headers::{Sender, _From, _To},
+ header_components::Mailbox,
+ error::{BuildInValidationError}
+};
+use mail::{
+ Mail,
+ error::{MailError, OtherValidationError}
+};
+
+use ::error::{ OtherValidationError as AnotherOtherValidationError };
/// This type contains a mail and potentially some envelop data.
///
@@ -131,7 +139,7 @@ pub fn derive_envelop_data_from_mail(mail: &Mail)
mailaddress_from_mailbox(sender)?
} else {
let from = headers.get_single(_From)
- .ok_or(BuildInValidationError::NoFrom)??;
+ .ok_or(OtherValidationError::NoFrom)??;
if from.len() > 1 {
return Err(BuildInValidationError::MultiMailboxFromWithoutSender.into());
@@ -145,7 +153,7 @@ pub fn derive_envelop_data_from_mail(mail: &Mail)
let to = to?;
to.try_mapped_ref(mailaddress_from_mailbox)?
} else {
- return Err(BuildInValidationError::NoTo.into());
+ return Err(AnotherOtherValidationError::NoTo.into());
};
//TODO Cc, Bcc
@@ -161,10 +169,15 @@ mod test {
mod derive_envelop_data_from_mail {
use super::super::derive_envelop_data_from_mail;
- use mail::{Builder, Resource};
- use headers::{_From, _To, Sender};
- use headers::components::MediaType;
- use mail::file_buffer::FileBuffer;
+ use mail::{
+ Mail,
+ Resource,
+ file_buffer::FileBuffer
+ };
+ use headers::{
+ headers::{_From, _To, Sender},
+ header_components::MediaType
+ };
fn mock_resource() -> Resource {
let mt = MediaType::parse("text/plain; charset=utf-8").unwrap();
@@ -174,12 +187,13 @@ mod test {
#[test]
fn use_sender_if_given() {
- let builder = Builder::singlepart(mock_resource())
- .header(Sender, "strange@caffe.test").unwrap()
- .header(_From, ["ape@caffe.test", "epa@caffe.test"]).unwrap()
- .header(_To, ["das@ding.test"]).unwrap();
+ let mut mail = Mail::new_singlepart_mail(mock_resource());
- let mail = builder.build().unwrap();
+ mail.insert_headers(headers! {
+ Sender: "strange@caffe.test",
+ _From: ["ape@caffe.test", "epa@caffe.test"],
+ _To: ["das@ding.test"]
+ }.unwrap());
let envelop_data = derive_envelop_data_from_mail(&mail).unwrap();
@@ -191,11 +205,11 @@ mod test {
#[test]
fn use_from_if_no_sender_given() {
- let builder = Builder::singlepart(mock_resource())
- .header(_From, ["ape@caffe.test"]).unwrap()
- .header(_To, ["das@ding.test"]).unwrap();
-
- let mail = builder.build().unwrap();
+ let mut mail = Mail::new_singlepart_mail(mock_resource());
+ mail.insert_headers(headers! {
+ _From: ["ape@caffe.test"],
+ _To: ["das@ding.test"]
+ }.unwrap());
let envelop_data = derive_envelop_data_from_mail(&mail).unwrap();
@@ -207,11 +221,11 @@ mod test {
#[test]
fn fail_if_no_sender_but_multi_mailbox_from() {
- let builder = Builder::singlepart(mock_resource())
- .header(_From, ["ape@caffe.test", "a@b.test"]).unwrap()
- .header(_To, ["das@ding.test"]).unwrap();
-
- let mail = builder.build().unwrap();
+ let mut mail = Mail::new_singlepart_mail(mock_resource());
+ mail.insert_headers(headers! {
+ _From: ["ape@caffe.test", "a@b.test"],
+ _To: ["das@ding.test"]
+ }.unwrap());
let envelop_data = derive_envelop_data_from_mail(&mail);
@@ -221,11 +235,11 @@ mod test {
#[test]
fn use_to() {
- let builder = Builder::singlepart(mock_resource())
- .header(_From, ["ape@caffe.test"]).unwrap()
- .header(_To, ["das@ding.test"]).unwrap();
-
- let mail = builder.build().unwrap();
+ let mut mail = Mail::new_singlepart_mail(mock_resource());
+ mail.insert_headers(headers! {
+ _From: ["ape@caffe.test"],
+ _To: ["das@ding.test"]
+ }.unwrap());
let envelop_data = derive_envelop_data_from_mail(&mail).unwrap();
@@ -237,8 +251,10 @@ mod test {
}
mod mailaddress_from_mailbox {
- use headers::HeaderTryFrom;
- use headers::components::{Mailbox, Email};
+ use headers::{
+ HeaderTryFrom,
+ header_components::{Mailbox, Email}
+ };
use super::super::mailaddress_from_mailbox;
#[test]