private IEnumerable <BaseItemIdType> InternalFindItemIds(FindItemType findItemType) { IndexedPageViewType pageView = new IndexedPageViewType { Offset = 0, BasePoint = IndexBasePointType.Beginning, MaxEntriesReturnedSpecified = true, MaxEntriesReturned = 512 }; findItemType.ItemShape = EwsAuditClient.IdOnlyItemShape; findItemType.Item = pageView; bool haveMore; do { ArrayOfRealItemsType localItemsList = null; haveMore = false; this.CallEwsWithRetries((LID)53436U, () => this.binding.FindItem(findItemType), delegate(ResponseMessageType responseMessage, int messageIndex) { FindItemResponseMessageType findItemResponseMessageType = responseMessage as FindItemResponseMessageType; if (findItemResponseMessageType != null && findItemResponseMessageType.ResponseClass == ResponseClassType.Success && findItemResponseMessageType.RootFolder != null && findItemResponseMessageType.RootFolder.Item != null) { localItemsList = (findItemResponseMessageType.RootFolder.Item as ArrayOfRealItemsType); haveMore = !findItemResponseMessageType.RootFolder.IncludesLastItemInRange; if (haveMore) { pageView.Offset = findItemResponseMessageType.RootFolder.IndexedPagingOffset; } return(true); } return(false); }, null); if (localItemsList != null && localItemsList.Items != null && localItemsList.Items.Length > 0) { new List <BaseItemIdType>(localItemsList.Items.Length); foreach (ItemType item in localItemsList.Items) { if (item != null && item.ItemId != null && !string.IsNullOrEmpty(item.ItemId.Id)) { yield return(item.ItemId); } } } }while (haveMore); yield break; }
public BaseFolderType[] GetSubFolders(BaseFolderIdType parentFolderId, FolderResponseShapeType folderShape) { if (folderShape == null) { folderShape = EwsAuditClient.DefaultFolderShape; } IndexedPageViewType pageView = new IndexedPageViewType { Offset = 0, BasePoint = IndexBasePointType.Beginning, MaxEntriesReturnedSpecified = true, MaxEntriesReturned = 256 }; FindFolderType findFolderType = new FindFolderType { FolderShape = folderShape, Item = pageView, ParentFolderIds = new BaseFolderIdType[] { parentFolderId }, Traversal = FolderQueryTraversalType.Shallow }; HashSet <string> hashSet = null; List <BaseFolderType> list = null; bool haveMore; do { findFolderType.Item = pageView; BaseFolderType[] localFoldersList = null; haveMore = false; this.CallEwsWithRetries((LID)43196U, () => this.binding.FindFolder(findFolderType), delegate(ResponseMessageType responseMessage, int messageIndex) { FindFolderResponseMessageType findFolderResponseMessageType = responseMessage as FindFolderResponseMessageType; if (findFolderResponseMessageType != null && findFolderResponseMessageType.ResponseClass == ResponseClassType.Success && findFolderResponseMessageType.RootFolder != null) { localFoldersList = findFolderResponseMessageType.RootFolder.Folders; haveMore = !findFolderResponseMessageType.RootFolder.IncludesLastItemInRange; if (haveMore) { pageView.Offset = findFolderResponseMessageType.RootFolder.IndexedPagingOffset; } return(true); } return(false); }, null); if (localFoldersList != null && localFoldersList.Length > 0) { foreach (BaseFolderType baseFolderType in localFoldersList) { if (baseFolderType != null && baseFolderType.FolderId != null && !string.IsNullOrEmpty(baseFolderType.FolderId.Id)) { if (hashSet == null) { hashSet = new HashSet <string>(); } else if (hashSet.Contains(baseFolderType.FolderId.Id)) { goto IL_18B; } if (list == null) { list = new List <BaseFolderType>(localFoldersList.Length); } hashSet.Add(baseFolderType.FolderId.Id); list.Add(baseFolderType); } IL_18B :; } } }while (haveMore); if (list != null && list.Count > 0) { return(list.ToArray()); } return(Array <BaseFolderType> .Empty); }