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)}."); } }
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(); }
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(); }
/// <summary> /// Returns the membership. /// </summary> protected abstract Task <ActionResult <MembershipContainer> > OnGetMembershipAsync(GetMembershipRequest request);
/// <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); }
protected override Task <ActionResult <MembershipContainer> > OnGetMembershipAsync(GetMembershipRequest request) { var result = (ActionResult <MembershipContainer>) new ObjectResult(new MembershipContainer()); return(Task.FromResult(result)); }