コード例 #1
0
        public async Task <ActionResult <MembershipContainer> > GetMembershipAsync([Required] string contextId,
                                                                                   int?limit = null, string rlid = null, Role?role = null)
        {
            try
            {
                _logger.LogDebug($"Entering {nameof(GetMembershipAsync)}.");

                try
                {
                    var request = new GetMembershipRequest(contextId, limit, rlid, role);
                    return(await OnGetMembershipAsync(request).ConfigureAwait(false));
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, $"An unexpected error occurred in {nameof(GetMembershipAsync)}.");
                    return(StatusCode(StatusCodes.Status500InternalServerError, new ProblemDetails
                    {
                        Title = "An unexpected error occurred",
                        Status = StatusCodes.Status500InternalServerError,
                        Detail = _env.IsDevelopment()
                            ? ex.Message + ex.StackTrace
                            : ex.Message
                    }));
                }
            }
            finally
            {
                _logger.LogDebug($"Exiting {nameof(GetMembershipAsync)}.");
            }
        }
コード例 #2
0
        private async Task <GetMembershipResponse> GetMembershipAsync(GetMembershipRequest request)
        {
            var response = new GetMembershipResponse();

            // This test controller implements a very simple authorization scheme
            var ltiRequest = await Request.ParseLtiRequestAsync();

            var signature = ltiRequest.GenerateSignature("secret");

            if (!ltiRequest.Signature.Equals(signature))
            {
                return(Unauthorized());
            }

            // If the contextId is unknown, return NotFound
            if (!request.ContextId.Equals("context-1"))
            {
                return(NotFound($"Cannot find {nameof(request.ContextId)}"));
            }

            switch (request.Role)
            {
            // If the Role filter is specified, only return the corresponding page
            case ContextRole.Learner:
                response.MembershipContainerPage = GetMembershipPageOfLearners();
                break;

            case ContextRole.Instructor:
                response.MembershipContainerPage = GetMembershipPageOfInstructors();
                break;

            default:
                var page = Request.Query["page"];

                // If this is the first page, return the list of instructors
                // and set the next page URL to include page=2
                if (page.Count == 0)
                {
                    response.MembershipContainerPage          = GetMembershipPageOfInstructors();
                    response.MembershipContainerPage.NextPage = new Uri(Request.GetUri(), "/ims/membership/context/context-1?page=2").AbsoluteUri;
                }

                // If this is the second page, return the list of learners
                // but do not set the next page URL
                else if (page[0].Equals("2"))
                {
                    response.MembershipContainerPage = GetMembershipPageOfLearners();
                }

                // Otherwise, we don't know what page they want
                else
                {
                    return(NotFound($"Cannot find page {page}"));
                }

                break;
            }
            return(response);
        }
 /// <summary>Snippet for GetMembership</summary>
 public void GetMembershipRequestObject()
 {
     // Snippet: GetMembership(GetMembershipRequest, CallSettings)
     // Create client
     GkeHubMembershipServiceClient gkeHubMembershipServiceClient = GkeHubMembershipServiceClient.Create();
     // Initialize request argument(s)
     GetMembershipRequest request = new GetMembershipRequest {
         Name = "",
     };
     // Make the request
     Membership response = gkeHubMembershipServiceClient.GetMembership(request);
     // End snippet
 }
        /// <summary>Snippet for GetMembershipAsync</summary>
        public async Task GetMembershipRequestObjectAsync()
        {
            // Snippet: GetMembershipAsync(GetMembershipRequest, CallSettings)
            // Additional: GetMembershipAsync(GetMembershipRequest, CancellationToken)
            // Create client
            GkeHubMembershipServiceClient gkeHubMembershipServiceClient = await GkeHubMembershipServiceClient.CreateAsync();

            // Initialize request argument(s)
            GetMembershipRequest request = new GetMembershipRequest {
                Name = "",
            };
            // Make the request
            Membership response = await gkeHubMembershipServiceClient.GetMembershipAsync(request);

            // End snippet
        }
        public async stt::Task GetMembershipRequestObjectAsync()
        {
            moq::Mock <GkeHubMembershipService.GkeHubMembershipServiceClient> mockGrpcClient = new moq::Mock <GkeHubMembershipService.GkeHubMembershipServiceClient>(moq::MockBehavior.Strict);

            mockGrpcClient.Setup(x => x.CreateOperationsClient()).Returns(new moq::Mock <lro::Operations.OperationsClient>().Object);
            GetMembershipRequest request = new GetMembershipRequest
            {
                Name = "name1c9368b0",
            };
            Membership expectedResponse = new Membership
            {
                MembershipName = MembershipName.FromProjectLocationMembership("[PROJECT]", "[LOCATION]", "[MEMBERSHIP]"),
                Labels         =
                {
                    {
                        "key8a0b6e3c",
                        "value60c16320"
                    },
                },
                Description        = "description2cf9da67",
                Endpoint           = new MembershipEndpoint(),
                State              = new MembershipState(),
                CreateTime         = new wkt::Timestamp(),
                UpdateTime         = new wkt::Timestamp(),
                DeleteTime         = new wkt::Timestamp(),
                Authority          = new Authority(),
                ExternalId         = "external_id9442680e",
                LastConnectionTime = new wkt::Timestamp(),
                UniqueId           = "unique_idee0c0869",
                InfrastructureType = Membership.Types.InfrastructureType.Unspecified,
            };

            mockGrpcClient.Setup(x => x.GetMembershipAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <Membership>(stt::Task.FromResult(expectedResponse), null, null, null, null));
            GkeHubMembershipServiceClient client = new GkeHubMembershipServiceClientImpl(mockGrpcClient.Object, null);
            Membership responseCallSettings      = await client.GetMembershipAsync(request, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None));

            xunit::Assert.Same(expectedResponse, responseCallSettings);
            Membership responseCancellationToken = await client.GetMembershipAsync(request, st::CancellationToken.None);

            xunit::Assert.Same(expectedResponse, responseCancellationToken);
            mockGrpcClient.VerifyAll();
        }
コード例 #6
0
        public void GetMembershipRequestObject()
        {
            moq::Mock <GkeHub.GkeHubClient> mockGrpcClient = new moq::Mock <GkeHub.GkeHubClient>(moq::MockBehavior.Strict);

            mockGrpcClient.Setup(x => x.CreateOperationsClient()).Returns(new moq::Mock <lro::Operations.OperationsClient>().Object);
            GetMembershipRequest request = new GetMembershipRequest
            {
                MembershipName = MembershipName.FromProjectLocationMembership("[PROJECT]", "[LOCATION]", "[MEMBERSHIP]"),
            };
            Membership expectedResponse = new Membership
            {
                MembershipName = MembershipName.FromProjectLocationMembership("[PROJECT]", "[LOCATION]", "[MEMBERSHIP]"),
                Labels         =
                {
                    {
                        "key8a0b6e3c",
                        "value60c16320"
                    },
                },
                Description        = "description2cf9da67",
                Endpoint           = new MembershipEndpoint(),
                State              = new MembershipState(),
                CreateTime         = new wkt::Timestamp(),
                UpdateTime         = new wkt::Timestamp(),
                DeleteTime         = new wkt::Timestamp(),
                ExternalId         = "external_id9442680e",
                LastConnectionTime = new wkt::Timestamp(),
                UniqueId           = "unique_idee0c0869",
                Authority          = new Authority(),
            };

            mockGrpcClient.Setup(x => x.GetMembership(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse);
            GkeHubClient client   = new GkeHubClientImpl(mockGrpcClient.Object, null);
            Membership   response = client.GetMembership(request);

            xunit::Assert.Same(expectedResponse, response);
            mockGrpcClient.VerifyAll();
        }
コード例 #7
0
 /// <summary>
 /// Returns the membership.
 /// </summary>
 protected abstract Task <ActionResult <MembershipContainer> > OnGetMembershipAsync(GetMembershipRequest request);
コード例 #8
0
        /// <inheritdoc />
        /// <summary>
        /// Returns members of the course.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>The members of the sample course.</returns>
        protected override async Task <ActionResult <MembershipContainer> > OnGetMembershipAsync(GetMembershipRequest request)
        {
            // In this sample app, each registered app user has an associated platform,
            // course, and membership. So look up the user that owns the requested course.

            if (!int.TryParse(request.ContextId, out var contextId))
            {
                var name = $"{nameof(request)}.{nameof(request.ContextId)}";
                ModelState.AddModelError(name, $"The {name} field cannot be converted into a course id.");
                return(BadRequest(new ValidationProblemDetails(ModelState)));
            }

            if (!await _courseValidator.UserHasAccess(contextId))
            {
                return(Unauthorized(new ProblemDetails
                {
                    Title = "Not authorized",
                    Detail = "User not authorized to access the requested course."
                }));
            }

            var course = await _context.GetCourseAsync(contextId);

            if (course == null)
            {
                return(NotFound(new ProblemDetails
                {
                    Title = ReasonPhrases.GetReasonPhrase(StatusCodes.Status404NotFound),
                    Detail = "Course not found"
                }));
            }

            var user = await _context.GetUserByCourseIdAsync(course.Id);

            var membership = new MembershipContainer
            {
                Id      = Request.GetDisplayUrl(),
                Context = new Context
                {
                    Id    = user.Course.Id.ToString(),
                    Title = user.Course.Name
                }
            };

            if (user.People.Any())
            {
                var people = user.People
                             .Select(p => new Member
                {
                    FamilyName         = p.LastName,
                    GivenName          = p.FirstName,
                    Roles              = PeopleModel.ParsePersonRoles(p.Roles),
                    Status             = MemberStatus.Active,
                    LisPersonSourcedId = p.SisId,
                    UserId             = p.Id.ToString(),
                    Email              = p.Email
                });

                if (request.Rlid.IsPresent())
                {
                    if (!int.TryParse(request.Rlid, out var resourceLinkId))
                    {
                        var name = $"{nameof(request)}.{nameof(request.ContextId)}";
                        ModelState.AddModelError(name, $"The {name} field cannot be converted into a resource linkid id.");
                        return(BadRequest(new ValidationProblemDetails(ModelState)));
                    }

                    people = people.Where(p => user.Course.ResourceLinks.Any(l => l.Id == resourceLinkId));
                }

                if (request.Role.HasValue)
                {
                    people = people.Where(p => p.Roles.Any(r => r == request.Role.Value));
                }

                membership.Members = people.ToList();
            }

            return(membership);
        }
コード例 #9
0
        protected override Task <ActionResult <MembershipContainer> > OnGetMembershipAsync(GetMembershipRequest request)
        {
            var result = (ActionResult <MembershipContainer>) new ObjectResult(new MembershipContainer());

            return(Task.FromResult(result));
        }