示例#1
0
        /// <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");
            }
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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));
 }
示例#6
0
 public PropertyInterpretation(GetUserSettingsResponse owner, UserSettingName userSettingName)
 {
     Name      = GetPropertyName(userSettingName);
     Value     = GetPropertyValue(owner, userSettingName, out TypeName, out bool hasErrors);
     HasErrors = hasErrors;
 }
示例#7
0
 public static string GetPropertyName(UserSettingName userSettingName)
 {
     return(userSettingName.ToString());
 }