/// <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); }
internal PullInfo Parse() { var rslt = new PullInfo(this); rslt.Source = this.Expression.Parse(); rslt.Target = new VariableInfo(this) { Name = this.Lvalue }; return rslt; }
internal PullInfo Parse() { var rslt = new PullInfo(this); rslt.Source = this.Expression.Parse(); rslt.Target = new VariableInfo(this) { Name = this.Lvalue }; return(rslt); }
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); }
/// <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)); }
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); }
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); }