internal static ProxyAddress ParseFromAD(string proxyAddressString) { string prefixString = null; string text = null; ProxyAddress.BreakPrefixAndAddress(proxyAddressString, out prefixString, out text); ProxyAddress proxyAddress = ProxyAddress.Parse(proxyAddressString, prefixString, text); if (typeof(X400ProxyAddress) == proxyAddress.GetType() && !((X400ProxyAddress)proxyAddress).EndingWithSemicolon) { proxyAddress = new InvalidProxyAddress(proxyAddressString, proxyAddress.Prefix, text, proxyAddress.IsPrimaryAddress, new ArgumentOutOfRangeException(DataStrings.InvalidX400AddressSpace(proxyAddressString))); } return(proxyAddress); }
protected override ValidationError ValidateValue(T item) { if (item is InvalidProxyAddress) { InvalidProxyAddress invalidProxyAddress = item as InvalidProxyAddress; return(new PropertyValidationError(DataStrings.ExceptionUsingInvalidAddress(invalidProxyAddress.ToString(), invalidProxyAddress.ParseException.Message), this.PropertyDefinition, invalidProxyAddress)); } if (item is InvalidProxyAddressTemplate) { InvalidProxyAddressTemplate invalidProxyAddressTemplate = item as InvalidProxyAddressTemplate; return(new PropertyValidationError(DataStrings.ExceptionUsingInvalidAddress(invalidProxyAddressTemplate.ToString(), invalidProxyAddressTemplate.ParseException.Message), this.PropertyDefinition, invalidProxyAddressTemplate)); } return(base.ValidateValue(item)); }
private static ProxyAddress Parse(string proxyAddressString, string prefixString, string addressString) { if (prefixString == null) { throw new ArgumentNullException("prefixString"); } if (addressString == null) { throw new ArgumentNullException("addressString"); } ProxyAddressPrefix proxyAddressPrefix; if (prefixString.Length == 0 && SmtpAddress.IsValidSmtpAddress(addressString)) { proxyAddressPrefix = ProxyAddressPrefix.Smtp; } else { try { proxyAddressPrefix = ProxyAddressPrefix.GetPrefix(prefixString); } catch (ArgumentOutOfRangeException parseException) { return(new InvalidProxyAddress(proxyAddressString, new CustomProxyAddressPrefix("ERROR"), proxyAddressString ?? (prefixString + ':' + addressString), true, parseException)); } catch (ArgumentException ex) { return(new InvalidProxyAddress(proxyAddressString, new CustomProxyAddressPrefix("ERROR"), proxyAddressString ?? (prefixString + ':' + addressString), true, new ArgumentOutOfRangeException(ex.Message, ex))); } } bool isPrimaryAddress = StringComparer.Ordinal.Equals(proxyAddressPrefix.PrimaryPrefix, prefixString); ProxyAddress result; try { ProxyAddress proxyAddress = proxyAddressPrefix.GetProxyAddress(addressString, isPrimaryAddress); proxyAddress.RawProxyAddressBaseString = proxyAddressString; result = proxyAddress; } catch (ArgumentOutOfRangeException parseException2) { result = new InvalidProxyAddress(proxyAddressString, proxyAddressPrefix, addressString, isPrimaryAddress, parseException2); } return(result); }