/// <summary> /// Reads response elements from XML. /// </summary> /// <param name="reader">The reader.</param> internal override void ReadElementsFromXml(EwsServiceXmlReader reader) { this.searchableMailboxes.Clear(); base.ReadElementsFromXml(reader); reader.ReadStartElement(XmlNamespace.Messages, XmlElementNames.SearchableMailboxes); if (!reader.IsEmptyElement) { do { reader.Read(); if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.SearchableMailbox)) { this.searchableMailboxes.Add(SearchableMailbox.LoadFromXml(reader)); } }while (!reader.IsEndElement(XmlNamespace.Messages, XmlElementNames.SearchableMailboxes)); } reader.Read(); if (reader.IsStartElement(XmlNamespace.Messages, XmlElementNames.FailedMailboxes)) { this.FailedMailboxes = FailedSearchMailbox.LoadFailedMailboxesXml(XmlNamespace.Messages, reader); } }
/// <summary> /// Reads response elements from Json. /// </summary> /// <param name="responseObject">The response object.</param> /// <param name="service">The service.</param> internal override void ReadElementsFromJson(JsonObject responseObject, ExchangeService service) { this.searchableMailboxes.Clear(); base.ReadElementsFromJson(responseObject, service); if (responseObject.ContainsKey(XmlElementNames.SearchMailboxes)) { foreach (object searchableMailboxObject in responseObject.ReadAsArray(XmlElementNames.SearchableMailboxes)) { JsonObject jsonSearchableMailbox = searchableMailboxObject as JsonObject; this.searchableMailboxes.Add(SearchableMailbox.LoadFromJson(jsonSearchableMailbox)); } } }
/// <summary> /// Load from json /// </summary> /// <param name="jsonObject">The json object</param> /// <returns>Discovery search configuration object</returns> internal static DiscoverySearchConfiguration LoadFromJson(JsonObject jsonObject) { List <SearchableMailbox> mailboxes = new List <SearchableMailbox>(); DiscoverySearchConfiguration configuration = new DiscoverySearchConfiguration(); if (jsonObject.ContainsKey(XmlElementNames.SearchId)) { configuration.SearchId = jsonObject.ReadAsString(XmlElementNames.SearchId); } if (jsonObject.ContainsKey(XmlElementNames.InPlaceHoldIdentity)) { configuration.InPlaceHoldIdentity = jsonObject.ReadAsString(XmlElementNames.InPlaceHoldIdentity); } if (jsonObject.ContainsKey(XmlElementNames.ManagedByOrganization)) { configuration.ManagedByOrganization = jsonObject.ReadAsString(XmlElementNames.ManagedByOrganization); } if (jsonObject.ContainsKey(XmlElementNames.SearchQuery)) { configuration.SearchQuery = jsonObject.ReadAsString(XmlElementNames.SearchQuery); } if (jsonObject.ContainsKey(XmlElementNames.SearchableMailboxes)) { foreach (object searchableMailboxObject in jsonObject.ReadAsArray(XmlElementNames.SearchableMailboxes)) { JsonObject jsonSearchableMailbox = searchableMailboxObject as JsonObject; mailboxes.Add(SearchableMailbox.LoadFromJson(jsonSearchableMailbox)); } } if (jsonObject.ContainsKey(XmlElementNames.Language)) { configuration.Language = jsonObject.ReadAsString(XmlElementNames.Language); } configuration.SearchableMailboxes = mailboxes.Count == 0 ? null : mailboxes.ToArray(); return(configuration); }
/// <summary> /// Load from xml /// </summary> /// <param name="reader">The reader</param> /// <returns>Searchable mailbox object</returns> internal static SearchableMailbox LoadFromXml(EwsServiceXmlReader reader) { reader.EnsureCurrentNodeIsStartElement(XmlNamespace.Types, XmlElementNames.SearchableMailbox); SearchableMailbox searchableMailbox = new SearchableMailbox(); searchableMailbox.Guid = new Guid(reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.Guid)); searchableMailbox.SmtpAddress = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.PrimarySmtpAddress); bool isExternalMailbox = false; bool.TryParse(reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.IsExternalMailbox), out isExternalMailbox); searchableMailbox.IsExternalMailbox = isExternalMailbox; searchableMailbox.ExternalEmailAddress = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.ExternalEmailAddress); searchableMailbox.DisplayName = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.DisplayName); bool isMembershipGroup = false; bool.TryParse(reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.IsMembershipGroup), out isMembershipGroup); searchableMailbox.IsMembershipGroup = isMembershipGroup; searchableMailbox.ReferenceId = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.ReferenceId); return searchableMailbox; }
/// <summary> /// Load from json /// </summary> /// <param name="jsonObject">The json object</param> /// <returns>Searchable mailbox object</returns> internal static SearchableMailbox LoadFromJson(JsonObject jsonObject) { SearchableMailbox searchableMailbox = new SearchableMailbox(); if (jsonObject.ContainsKey(XmlElementNames.Guid)) { searchableMailbox.Guid = new Guid(jsonObject.ReadAsString(XmlElementNames.Guid)); } if (jsonObject.ContainsKey(XmlElementNames.DisplayName)) { searchableMailbox.DisplayName = jsonObject.ReadAsString(XmlElementNames.DisplayName); } if (jsonObject.ContainsKey(XmlElementNames.PrimarySmtpAddress)) { searchableMailbox.SmtpAddress = jsonObject.ReadAsString(XmlElementNames.PrimarySmtpAddress); } if (jsonObject.ContainsKey(XmlElementNames.IsExternalMailbox)) { searchableMailbox.IsExternalMailbox = jsonObject.ReadAsBool(XmlElementNames.IsExternalMailbox); } if (jsonObject.ContainsKey(XmlElementNames.ExternalEmailAddress)) { searchableMailbox.ExternalEmailAddress = jsonObject.ReadAsString(XmlElementNames.ExternalEmailAddress); } if (jsonObject.ContainsKey(XmlElementNames.IsMembershipGroup)) { searchableMailbox.IsMembershipGroup = jsonObject.ReadAsBool(XmlElementNames.IsMembershipGroup); } if (jsonObject.ContainsKey(XmlElementNames.ReferenceId)) { searchableMailbox.ReferenceId = jsonObject.ReadAsString(XmlElementNames.ReferenceId); } return(searchableMailbox); }
/// <summary> /// Load from xml /// </summary> /// <param name="reader">The reader</param> /// <returns>Searchable mailbox object</returns> internal static SearchableMailbox LoadFromXml(EwsServiceXmlReader reader) { reader.EnsureCurrentNodeIsStartElement(XmlNamespace.Types, XmlElementNames.SearchableMailbox); SearchableMailbox searchableMailbox = new SearchableMailbox(); searchableMailbox.Guid = new Guid(reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.Guid)); searchableMailbox.SmtpAddress = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.PrimarySmtpAddress); bool isExternalMailbox = false; bool.TryParse(reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.IsExternalMailbox), out isExternalMailbox); searchableMailbox.IsExternalMailbox = isExternalMailbox; searchableMailbox.ExternalEmailAddress = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.ExternalEmailAddress); searchableMailbox.DisplayName = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.DisplayName); bool isMembershipGroup = false; bool.TryParse(reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.IsMembershipGroup), out isMembershipGroup); searchableMailbox.IsMembershipGroup = isMembershipGroup; searchableMailbox.ReferenceId = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.ReferenceId); return(searchableMailbox); }
/// <summary> /// Load from xml /// </summary> /// <param name="reader">The reader</param> /// <returns>Discovery search configuration object</returns> internal static DiscoverySearchConfiguration LoadFromXml(EwsServiceXmlReader reader) { List <SearchableMailbox> mailboxes = new List <SearchableMailbox>(); reader.EnsureCurrentNodeIsStartElement(XmlNamespace.Types, XmlElementNames.DiscoverySearchConfiguration); DiscoverySearchConfiguration configuration = new DiscoverySearchConfiguration(); configuration.SearchId = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.SearchId); // the query could be empty means there won't be Query element, hence needs to read and check // if the next element is not Query, then it means already read SearchableMailboxes element configuration.SearchQuery = string.Empty; configuration.InPlaceHoldIdentity = string.Empty; configuration.ManagedByOrganization = string.Empty; configuration.Language = string.Empty; do { reader.Read(); if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.SearchQuery)) { configuration.SearchQuery = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.SearchQuery); reader.ReadEndElementIfNecessary(XmlNamespace.Types, XmlElementNames.SearchQuery); } else if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.SearchableMailboxes)) { // search object without any source mailbox is possible, hence need to check if element is empty if (!reader.IsEmptyElement) { while (!reader.IsEndElement(XmlNamespace.Types, XmlElementNames.SearchableMailboxes)) { reader.Read(); if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.SearchableMailbox)) { mailboxes.Add(SearchableMailbox.LoadFromXml(reader)); reader.ReadEndElementIfNecessary(XmlNamespace.Types, XmlElementNames.SearchableMailbox); } } } } else if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.InPlaceHoldIdentity)) { configuration.InPlaceHoldIdentity = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.InPlaceHoldIdentity); reader.ReadEndElementIfNecessary(XmlNamespace.Types, XmlElementNames.InPlaceHoldIdentity); } else if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.ManagedByOrganization)) { configuration.ManagedByOrganization = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.ManagedByOrganization); reader.ReadEndElementIfNecessary(XmlNamespace.Types, XmlElementNames.ManagedByOrganization); } else if (reader.IsStartElement(XmlNamespace.Types, XmlElementNames.Language)) { configuration.Language = reader.ReadElementValue(XmlNamespace.Types, XmlElementNames.Language); reader.ReadEndElementIfNecessary(XmlNamespace.Types, XmlElementNames.Language); } else { break; } }while (!reader.IsEndElement(XmlNamespace.Types, XmlElementNames.DiscoverySearchConfiguration)); configuration.SearchableMailboxes = mailboxes.Count == 0 ? null : mailboxes.ToArray(); return(configuration); }