/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListTestsResponse response = new ListTestsResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("nextToken", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.NextToken = unmarshaller.Unmarshall(context); continue; } if (context.TestExpression("tests", targetDepth)) { var unmarshaller = new ListUnmarshaller <Test, TestUnmarshaller>(TestUnmarshaller.Instance); response.Tests = unmarshaller.Unmarshall(context); continue; } } return(response); }
public async Task <ListTestsResponse> ListTests(ListTestsRequest request) { var lstRequest = new ListTestsDataRequest(request.FilteringOrders, request.Range, false, request.ReturnNotSaved); var tests = await TestsStorage.ListTestsDataAsync(lstRequest); var testsIds = tests.Tests.Select(c => c.TestId).ToArray(); var getInfosR = new RunnerService.API.Models.GetTestsInfoRequest(testsIds); RunnerService.API.Models.GetTestsInfoResponse getInfosResp = request.ReturnNotSaved ? (RunnerService.API.Models.GetTestsInfoResponse)null : (RunnerService.API.Models.GetTestsInfoResponse) await RunnerService.GetTestsInfoAsync(getInfosR); var fullInfos = tests.Tests.Select(c => (Case: c, RunInfo: getInfosResp == null ? (RunnerService.API.Models.TestRunInfo)null : getInfosResp.RunInfos.FirstOrDefault(r => r.TestId == c.TestId))); //var fullInfos = tests.Tests.Zip(getInfosResp?.RunInfos ?? ((RunnerService.API.Models.TestRunInfo)null).Repeat(tests.Tests.Length).ToArray() , (Case, RunInfo) => (Case, RunInfo)); var response = new ListTestsResponse(ddd().ToArray(), tests.TotalCount); return(response); IEnumerable <TestInfo> ddd() { foreach (var info in fullInfos) { yield return(new TestInfo() { TestId = info.Case.TestId, TestName = info.Case.TestName, Author = info.Case.AuthorName == null ? null : new GetUserInfoResponse(info.Case.AuthorName, null, null), Target = new TestCaseInfo() { DisplayName = info.Case.TestDescription, TargetType = info.Case?.Data?.Type, Parameters = info.Case?.Data?.Parameters, CreateDate = info.Case?.CreationDate ?? default, KeyParameters = info.Case?.Data?.KeyParameters.Select(p => p.Key + "###" + p.Value).Aggregate(Environment.NewLine) // Someone, pls, rewrite :D },