예제 #1
0
        public async Task Can_extract_regions_from_files()
        {
            using (var agent = new AgentService())
            {
                var json = new CreateRegionsFromFilesRequest(
                    "testRun",
                    new[] { new SourceFile(
                                "program.cs",
                                "#region one\n#endregion\n#region two\nvar a = 1;\n#endregion") }).ToJson();

                var request = new HttpRequestMessage(
                    HttpMethod.Post,
                    @"/project/files/regions")
                {
                    Content = new StringContent(
                        json,
                        Encoding.UTF8,
                        "application/json")
                };

                var response = await agent.SendAsync(request);

                var result = await response
                             .EnsureSuccess()
                             .DeserializeAs <CreateRegionsFromFilesResponse>();

                result.Should().NotBeNull();
                result.Regions.Should().Contain(p => p.Content == string.Empty && p.Id.Contains("one") && p.Id.Contains("program.cs"));
                result.Regions.Should().Contain(p => p.Content == "var a = 1;" && p.Id.Contains("two") && p.Id.Contains("program.cs"));
            }
        }
        public static HttpRequestMessage BuildRegionFromFilesRequest(this ClientConfiguration configuration, IEnumerable <SourceFile> files, string hostOrigin, string requestId = null)
        {
            var api = configuration.Links.RegionsFromFiles;

            var request = BuildRequestWithHeaders(configuration, api, hostOrigin);
            var payload = new CreateRegionsFromFilesRequest(requestId ?? (Guid.NewGuid().ToString()), files?.ToArray());

            SetRequestContent(payload, request);

            return(request);
        }
예제 #3
0
        public IActionResult GenerateRegionsFromFiles([FromBody] CreateRegionsFromFilesRequest request)
        {
            using (var operation = Log.OnEnterAndConfirmOnExit())
            {
                var regions  = request.Files.SelectMany(ExtractRegions);
                var response = new CreateRegionsFromFilesResponse(request.RequestId, regions.ToArray());

                IActionResult result = Ok(response);
                operation.Succeed();

                return(result);
            }
        }