feat(transport): Make serde optionnal
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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>,
|
||||
|
||||
@@ -3,4 +3,5 @@ extern crate lettre;
|
||||
mod transport_smtp;
|
||||
mod transport_sendmail;
|
||||
mod transport_stub;
|
||||
#[cfg(feature = "file-transport")]
|
||||
mod transport_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(
|
||||
|
||||
Reference in New Issue
Block a user