Example #1
0
        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;
        }
Example #2
0
        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);
        }