diff options
author | Philipp Korber <pilippkorber@gmail.com> | 2018-09-10 22:41:41 +0200 |
---|---|---|
committer | Philipp Korber <pilippkorber@gmail.com> | 2018-09-10 22:41:41 +0200 |
commit | 53cafca7768d9e48f81102bc60aa4420be8aa9a9 (patch) | |
tree | 0290a273c08aee9b49c48818997e70ef0365b624 | |
parent | f02c8db8b96d2ca143f8a8c7e24961cd5dfcea47 (diff) |
chore(deps) applied chages from upstream
-rw-r--r-- | src/error.rs | 28 | ||||
-rw-r--r-- | src/lib.rs | 13 | ||||
-rw-r--r-- | src/request.rs | 88 |
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 @@ -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] |