public async Task It_can_get_resources_even_without_an_initial_search_call_if_you_know_what_you_are_doing() { // Arrange var it = IdmNetClientFactory.BuildClient(); PagingContext pagingContext = new PagingContext { CurrentIndex = 0, Filter = "/ObjectTypeDescription", Selection = new[] { "ObjectID", "ObjectType", "DisplayName" }, Sorting = new Sorting(), EnumerationDirection = "Forwards", Expires = "9999-12-31T23:59:59.9999999" }; // Act var pagedResults = await it.GetPagedResultsAsync(5, pagingContext); // Assert Assert.AreEqual(5, pagedResults.Results.Count); Assert.IsTrue(pagedResults.Results[0].DisplayName.Length > 0); Assert.AreEqual(null, pagedResults.EndOfSequence); Assert.AreEqual(true, pagedResults.Items is XmlNode[]); Assert.AreEqual(5, ((XmlNode[])(pagedResults.Items)).Length); }
private static PagedSearchResults ConvertPullResponseToPagedSearchResults(PagingContext pagingContext, Message pullResponseMessage) { var pagedSearchResults = pullResponseMessage.GetBody<PagedSearchResults>(new SoapXmlSerializer(typeof(PagedSearchResults))); if (pagedSearchResults.Items != null) { var xmlNodes = (XmlNode[])pagedSearchResults.Items; var resources = xmlNodes.Select(BuildResource).ToArray(); pagedSearchResults.Results.AddRange(resources); pagingContext.CurrentIndex += xmlNodes.Length; } return pagedSearchResults; }
private static Message BuildPullMessage(int pageSize, PagingContext pagingContext) { var pullMessage = Message.CreateMessage( MessageVersion.Default, "http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull", new Pull { PagingContext = pagingContext, MaxElements = pageSize, PullAdjustment = new PullAdjustment { StartingIndex = pagingContext.CurrentIndex, EnumerationDirection = "Forwards" } }, new SoapXmlSerializer(typeof(Pull))); return pullMessage; }
/// <summary> /// Pull resources from Identity Manager /// </summary> /// <param name="pageSize">Maximum number of records to return</param> /// <param name="pagingContext">Information regarding which records to pull</param> /// <returns>Paged search results</returns> /// <exception cref="SoapFaultException"></exception> public async Task<PagedSearchResults> GetPagedResultsAsync(int pageSize, PagingContext pagingContext) { var pullMessage = BuildPullMessage(pageSize, pagingContext); var pullResponseMessage = await _searchClient.PullAsync(pullMessage); if (pullResponseMessage.IsFault) throw new SoapFaultException("Pull Fault: " + pullResponseMessage); return ConvertPullResponseToPagedSearchResults(pagingContext, pullResponseMessage); }