Make ServerInfo::supports_feature return an Option

This commit is contained in:
Alexis Mousset
2014-11-03 16:05:21 +01:00
parent 09988e3af6
commit dcf89e774a
2 changed files with 11 additions and 11 deletions

View File

@@ -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
};

View File

@@ -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());
}
}