// GET group members and page through the results (10 at a time) public async Task <ActionResult> GroupMembers(string groupId, string nextLink) { // Show the profile of a user after a user is clicked from the search. var client = GetGraphServiceClient(); List <User> userMembers = new List <User>(); IGroupMembersCollectionWithReferencesPage members = new GroupMembersCollectionWithReferencesPage(); IGroupMembersCollectionWithReferencesRequest membersRequest = null; try { if (groupId != null) { var group = await client.Groups[groupId].Request().Select("displayName,id").GetAsync(); ViewBag.groupId = groupId; ViewBag.groupName = group.DisplayName; membersRequest = client.Groups[groupId].Members.Request().Top(10); } members = await membersRequest.GetAsync(); foreach (DirectoryObject d in members.CurrentPage) { User u = d as User; userMembers.Add(u); } } catch (Exception) { // no users? } return(View(userMembers)); }
public async System.Threading.Tasks.Task GetAsync() { using (var httpResponseMessage = new HttpResponseMessage()) using (var responseStream = new MemoryStream()) using (var streamContent = new StreamContent(responseStream)) { httpResponseMessage.Content = streamContent; var nextQueryKey = "key"; var nextQueryValue = "value"; var requestUrl = string.Format("{0}/groups/groupId/members", this.graphBaseUrl); var nextPageRequestUrl = string.Format("{0}?{1}={2}", requestUrl, nextQueryKey, nextQueryValue); this.httpProvider.Setup( provider => provider.SendAsync( It.Is <HttpRequestMessage>( request => request.RequestUri.ToString().StartsWith(requestUrl) && request.Method == HttpMethod.Get), HttpCompletionOption.ResponseContentRead, CancellationToken.None)) .Returns(System.Threading.Tasks.Task.FromResult(httpResponseMessage)); var membersCollectionPage = new GroupMembersCollectionWithReferencesPage { new User(), }; var membersCollectionResponse = new GroupMembersCollectionWithReferencesResponse { Value = membersCollectionPage, AdditionalData = new Dictionary <string, object> { { "@odata.nextLink", nextPageRequestUrl } }, }; this.serializer.Setup( serializer => serializer.DeserializeObject <GroupMembersCollectionWithReferencesResponse>(It.IsAny <string>())) .Returns(membersCollectionResponse); var returnedCollectionPage = await this.graphServiceClient.Groups["groupId"].Members.Request().GetAsync() as GroupMembersCollectionWithReferencesPage; Assert.IsNotNull(returnedCollectionPage, "Collection page not returned."); Assert.AreEqual(membersCollectionPage, returnedCollectionPage, "Unexpected collection page returned."); Assert.AreEqual( membersCollectionResponse.AdditionalData, returnedCollectionPage.AdditionalData, "Additional data not initialized on collection page."); var nextPageRequest = returnedCollectionPage.NextPageRequest as GroupMembersCollectionWithReferencesRequest; Assert.IsNotNull(nextPageRequest, "Next page request not returned."); Assert.AreEqual(new Uri(requestUrl), new Uri(nextPageRequest.RequestUrl), "Unexpected URL initialized for next page request."); Assert.AreEqual(1, nextPageRequest.QueryOptions.Count, "Unexpected query options initialized."); Assert.AreEqual(nextQueryKey, nextPageRequest.QueryOptions[0].Name, "Unexpected query option name initialized."); Assert.AreEqual(nextQueryValue, nextPageRequest.QueryOptions[0].Value, "Unexpected query option value initialized."); } }