Make ServerInfo::supports_feature return an Option
This commit is contained in:
@@ -118,15 +118,15 @@ impl<S: Connecter + ClientStream + Clone> Client<S> {
|
||||
|
||||
// Checks message encoding according to the server's capability
|
||||
// TODO : Add an encoding check.
|
||||
if ! self.server_info.clone().unwrap().supports_feature(extension::EightBitMime).is_ok() {
|
||||
if ! message.clone().to_string().is_ascii() {
|
||||
if ! self.server_info.clone().unwrap().supports_feature(extension::EightBitMime).is_some() {
|
||||
if ! message.clone().is_ascii() {
|
||||
self.smtp_fail::<S, &str>("Server does not accepts UTF-8 strings");
|
||||
}
|
||||
}
|
||||
|
||||
// Get maximum message size if defined
|
||||
let max_size = match self.server_info.clone().unwrap().supports_feature(extension::Size(0)) {
|
||||
Ok(extension::Size(max)) => max,
|
||||
Some(extension::Size(max)) => max,
|
||||
_ => -1
|
||||
};
|
||||
|
||||
|
||||
@@ -63,17 +63,17 @@ impl ServerInfo {
|
||||
}
|
||||
|
||||
/// Checks if the server supports an ESMTP feature
|
||||
pub fn supports_feature(&self, keyword: Extension) -> Result<Extension, ()> {
|
||||
pub fn supports_feature(&self, keyword: Extension) -> Option<Extension> {
|
||||
match self.esmtp_features.clone() {
|
||||
Some(esmtp_features) => {
|
||||
for feature in esmtp_features.iter() {
|
||||
if keyword.same_extension_as(*feature) {
|
||||
return Ok(*feature);
|
||||
return Some(*feature);
|
||||
}
|
||||
}
|
||||
Err({})
|
||||
None
|
||||
},
|
||||
None => Err({})
|
||||
None => None
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,18 +118,18 @@ mod test {
|
||||
assert_eq!(ServerInfo{
|
||||
name: String::from_str("name"),
|
||||
esmtp_features: Some(vec!(extension::EightBitMime))
|
||||
}.supports_feature(extension::EightBitMime), Ok(extension::EightBitMime));
|
||||
}.supports_feature(extension::EightBitMime), Some(extension::EightBitMime));
|
||||
assert_eq!(ServerInfo{
|
||||
name: String::from_str("name"),
|
||||
esmtp_features: Some(vec!(extension::Size(42), extension::EightBitMime))
|
||||
}.supports_feature(extension::EightBitMime), Ok(extension::EightBitMime));
|
||||
}.supports_feature(extension::EightBitMime), Some(extension::EightBitMime));
|
||||
assert_eq!(ServerInfo{
|
||||
name: String::from_str("name"),
|
||||
esmtp_features: Some(vec!(extension::Size(42), extension::EightBitMime))
|
||||
}.supports_feature(extension::Size(0)), Ok(extension::Size(42)));
|
||||
}.supports_feature(extension::Size(0)), Some(extension::Size(42)));
|
||||
assert!(ServerInfo{
|
||||
name: String::from_str("name"),
|
||||
esmtp_features: Some(vec!(extension::EightBitMime))
|
||||
}.supports_feature(extension::Size(42)).is_err());
|
||||
}.supports_feature(extension::Size(42)).is_none());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user