/// <summary> /// Reads user setting from XML. /// </summary> /// <param name="reader">The reader.</param> private void ReadSettingFromXml(EwsXmlReader reader) { string name = null; object value = null; do { reader.Read(); if (reader.NodeType == XmlNodeType.Element) { switch (reader.LocalName) { case XmlElementNames.Name: name = reader.ReadElementValue <string>(); break; case XmlElementNames.Value: value = reader.ReadElementValue(); break; case XmlElementNames.WebClientUrls: value = WebClientUrlCollection.LoadFromXml(reader); break; case XmlElementNames.ProtocolConnections: value = ProtocolConnectionCollection.LoadFromXml(reader); break; case XmlElementNames.AlternateMailboxes: value = AlternateMailboxCollection.LoadFromXml(reader); break; case XmlElementNames.DocumentSharingLocations: value = DocumentSharingLocationCollection.LoadFromXml(reader); break; } } }while (!reader.IsEndElement(XmlNamespace.Autodiscover, XmlElementNames.UserSetting)); // EWS Managed API is broken with AutoDSvc endpoint in RedirectUrl scenario try { UserSettingName userSettingName = EwsUtilities.Parse <UserSettingName>(name); this.Settings.Add(userSettingName, value); } catch (ArgumentException) { // ignore unexpected UserSettingName in the response (due to the server-side bugs). // it'd be better if this is hooked into ITraceListener, but that is unavailable here. // // in case "name" is null, EwsUtilities.Parse throws ArgumentNullException // (which derives from ArgumentException). // EwsUtilities.Assert( false, "GetUserSettingsResponse.ReadSettingFromXml", "Unexpected or empty name element in user setting"); } }
public string GetPropertyValue(GetUserSettingsResponse owner, UserSettingName userSettingName, out string typeName, out bool hasErrors) { object value = null; typeName = string.Empty; hasErrors = false; if (owner.Settings.TryGetValue(userSettingName, out value)) { if (value == null) { return(string.Empty); } typeName = value.GetType().FullName; ITypeValue interpreter = TypeValueFinder.GetTypeInterpreter(value.GetType()); return(interpreter != null?interpreter.GetValue(value) : value.ToString()); } foreach (UserSettingError err in owner.UserSettingErrors) { if (err.SettingName != userSettingName.ToString()) { continue; } typeName = typeof(UserSettingError).FullName; hasErrors = true; return($"{err.ErrorCode}: {err.ErrorMessage}"); } return(string.Empty); }
/// <summary> /// Tries the get the user setting value. /// </summary> /// <typeparam name="T">Type of user setting.</typeparam> /// <param name="setting">The setting.</param> /// <param name="value">The setting value.</param> /// <returns>True if setting was available.</returns> public bool TryGetSettingValue <T>(UserSettingName setting, out T value) { object objValue; if (this.Settings.TryGetValue(setting, out objValue)) { value = (T)objValue; return(true); } else { value = default(T); return(false); } }
/// <summary> /// Determines whether user setting is available in the OutlookConfiguration or not. /// </summary> /// <param name="setting">The setting.</param> /// <returns>True if user setting is available, otherwise, false. /// </returns> internal static bool IsAvailableUserSetting(UserSettingName setting) { return allOutlookProviderSettings.Member.Contains(setting); }
/// <summary> /// Determines whether user setting is available in the OutlookConfiguration or not. /// </summary> /// <param name="setting">The setting.</param> /// <returns>True if user setting is available, otherwise, false. /// </returns> internal static bool IsAvailableUserSetting(UserSettingName setting) { return(allOutlookProviderSettings.Member.Contains(setting)); }
public PropertyInterpretation(GetUserSettingsResponse owner, UserSettingName userSettingName) { Name = GetPropertyName(userSettingName); Value = GetPropertyValue(owner, userSettingName, out TypeName, out bool hasErrors); HasErrors = hasErrors; }
public static string GetPropertyName(UserSettingName userSettingName) { return(userSettingName.ToString()); }