コード例 #1
0
        /// <summary>
        /// Search the Identity Manager  (async await)
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public async Task <IEnumerable <IdmResource> > SearchAsync(SearchCriteria criteria, int pageSize = 50)
        {
            var results = new List <IdmResource>();

            try
            {
                if (criteria.Selection.Contains("*"))
                {
                    // Can throw the ArgumentOutOfRangeException if there are no results, in which case just return the empty list
                    await SetupGetStar(criteria);
                }

                PullInfo pullInfo = await PreparePagedSearchAsync(criteria, pageSize);

                // Pull all results
                PagedSearchResults pagedResults;
                PagingContext      pagingContext = pullInfo.PagingContext;
                do
                {
                    pagedResults = await GetPagedResultsAsync(pageSize, pagingContext);

                    results.AddRange(pagedResults.Results);
                } while (pagedResults.EndOfSequence == null);
            }
            catch (ArgumentOutOfRangeException)
            {
            }

            return(results);
        }
コード例 #2
0
ファイル: Pull.cs プロジェクト: koksaver/CodeHelper
 internal PullInfo Parse()
 {
     var rslt = new PullInfo(this);
     rslt.Source = this.Expression.Parse();
     rslt.Target = new VariableInfo(this) { Name = this.Lvalue };
     return rslt;
 }
コード例 #3
0
        internal PullInfo Parse()
        {
            var rslt = new PullInfo(this);

            rslt.Source = this.Expression.Parse();
            rslt.Target = new VariableInfo(this)
            {
                Name = this.Lvalue
            };
            return(rslt);
        }
コード例 #4
0
        private async Task <PullInfo> PreparePagedSearchAsync(SearchCriteria criteria, int pageSize)
        {
            var enumerateResponseMessage = await EnumerateSearch(criteria);

            var pullInfo = new PullInfo
            {
                PageSize          = pageSize,
                EnumerateResponse =
                    enumerateResponseMessage.GetBody <EnumerateResponse>(new SoapXmlSerializer(typeof(EnumerateResponse))),
            };

            return(pullInfo);
        }
コード例 #5
0
        /// <summary>
        /// Search the Identity Manager  (async await)
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public async Task <PagedSearchResults> GetPagedResultsAsync(SearchCriteria criteria, int pageSize = 50)
        {
            if (criteria.Selection.Contains("*"))
            {
                await SetupGetStar(criteria);
            }

            PullInfo pullInfo = await PreparePagedSearchAsync(criteria, pageSize);

            // Pull all results
            PagingContext pagingContext = pullInfo.PagingContext;

            return(await GetPagedResultsAsync(pageSize, pagingContext));
        }
コード例 #6
0
        private async Task SetupGetStar(SearchCriteria criteria)
        {
            criteria.Selection = new List <string> {
                "ObjectType"
            };
            PullInfo objectTypePullInfo = await PreparePagedSearchAsync(criteria, 1);

            PagingContext      objectTypePagingContext = objectTypePullInfo.PagingContext;
            PagedSearchResults objectTypeResults       = await GetPagedResultsAsync(1, objectTypePagingContext);

            string objectType = objectTypeResults.Results[0].ObjectType;

            criteria.Selection = await GetAttributeNamesForObjectType(objectType);
        }
コード例 #7
0
        public static PullInfo ParsePullDetailHeaders(IList <Parameter> headers)
        {
            var result = new PullInfo();

            foreach (var header in headers)
            {
                switch (header.Name)
                {
                case Constants.HEADER_DATA_FORMAT:
                    result.Format = (string)header.Value;
                    break;

                case Constants.HEADER_CURSOR_CURRENT:
                    result.CursorCurrent = (string)header.Value;
                    break;

                case Constants.HEADER_CURSOR_NEXT:
                    result.CursorNext = (string)header.Value;
                    break;
                }
            }

            return(result);
        }