feat(transport): Make serde optionnal

This commit is contained in:
Alexis Mousset
2017-07-17 13:44:39 +02:00
parent 0e01820ea4
commit 8a90f8f7b6
4 changed files with 17 additions and 6 deletions

View File

@@ -21,12 +21,15 @@ native-tls = "^0.1"
base64 = "^0.6"
hex = "^0.2"
rust-crypto = "^0.2"
serde = "^1.0"
serde_json = "^1.0"
serde_derive = "^1.0"
serde = { version = "^1.0", optional = true }
serde_json = { version = "^1.0", optional = true }
serde_derive = { version = "^1.0", optional = true }
[dev-dependencies]
env_logger = "^0.4"
[features]
default = ["file-transport"]
unstable = []
serde-impls = ["serde", "serde_derive"]
file-transport = ["serde-impls", "serde_json"]

View File

@@ -13,20 +13,25 @@ extern crate hex;
extern crate crypto;
extern crate bufstream;
extern crate native_tls;
#[cfg(feature = "file-transport")]
extern crate serde_json;
#[cfg(feature = "serde-impls")]
extern crate serde;
#[cfg(feature = "serde-impls")]
#[macro_use]
extern crate serde_derive;
pub mod smtp;
pub mod sendmail;
pub mod stub;
#[cfg(feature = "file-transport")]
pub mod file;
use std::fmt;
use std::fmt::{Display, Formatter};
/// Email address
#[derive(PartialEq, Eq, Clone, Debug, Serialize, Deserialize)]
#[derive(PartialEq, Eq, Clone, Debug)]
#[cfg_attr(feature = "serde-impls", derive(Serialize, Deserialize))]
pub struct EmailAddress(pub String);
impl Display for EmailAddress {
@@ -63,7 +68,8 @@ pub trait EmailTransport<U> {
}
/// Minimal email structure
#[derive(Debug, Clone, Serialize, Deserialize)]
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde-impls", derive(Serialize, Deserialize))]
pub struct SimpleSendableEmail {
/// To
to: Vec<EmailAddress>,

View File

@@ -3,4 +3,5 @@ extern crate lettre;
mod transport_smtp;
mod transport_sendmail;
mod transport_stub;
#[cfg(feature = "file-transport")]
mod transport_file;

View File

@@ -1,7 +1,7 @@
extern crate lettre;
use lettre::{EmailAddress, EmailTransport, SendableEmail, SimpleSendableEmail};
#[cfg(feature = "file-transport")]
use lettre::file::FileEmailTransport;
use std::env::temp_dir;
use std::fs::File;
@@ -9,6 +9,7 @@ use std::fs::remove_file;
use std::io::Read;
#[test]
#[cfg(feature = "file-transport")]
fn file_transport() {
let mut sender = FileEmailTransport::new(temp_dir());
let email = SimpleSendableEmail::new(