コード例 #1
0
        // 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));
        }
コード例 #2
0
        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.");
                    }
        }