public IActionResult DownloadRikimarus(
            CancellationToken cancellationToken,
            [FromQuery] Guid[] rikimaruIds,
            bool formattingIndented = true)
        {
            var resultFiles = new Dictionary <string, Stream>();

            foreach (var rikimaruId in rikimaruIds)
            {
                var dataSet = new Rikimaru
                {
                    Id = rikimaruId
                };
                resultFiles.Add(
                    $"{rikimaruId}.json", new JsonStreamer().GetMemoryStream(dataSet, formattingIndented));
            }

            var memoryStream = new ZipStreamer().GetZipStream(resultFiles);

            memoryStream.Position = 0;
            return(this.File(
                       memoryStream,
                       MediaTypeNames.Application.Zip,
                       $"{DateTime.UtcNow:yyyyMMdd-HHmmss}.zip"));
        }
        public IActionResult DownloadRikimaru(
            CancellationToken cancellationToken,
            [FromQuery] Guid rikimaruId,
            bool formattingIndented = true)
        {
            var dataSet = new Rikimaru
            {
                Id = rikimaruId
            };

            var memoryStream = new JsonStreamer().GetMemoryStream(dataSet, formattingIndented);

            return(this.File(
                       memoryStream,
                       MediaTypeNames.Application.Json,
                       $"{rikimaruId}.json"));
        }
예제 #3
0
        public async Task DownloadRikimaru_ShouldProvideJsonFile()
        {
            var rikimaru = new Rikimaru
            {
                Id = new Guid("4CA01206-BE49-4977-A3FE-AF83144F6195")
            };
            var client   = this.CreateHttpClient();
            var response = await client.GetAsync($"api/download/rikimaru?rikimaruId={rikimaru.Id}");

            var responseString = await response.Content.ReadAsStringAsync();

            Assert.That(
                response.StatusCode,
                Is.EqualTo(HttpStatusCode.OK),
                $"Response was: {responseString}.");

            Assert.That(
                response.Content.Headers.ContentDisposition.FileName,
                Is.EqualTo("4ca01206-be49-4977-a3fe-af83144f6195.json"));
        }
예제 #4
0
        public async Task DownloadRikimarus_MultipleWikifolios_ShouldUseTimeForFileName()
        {
            var rikimaru = new Rikimaru
            {
                Id = new Guid("4CA01206-BE49-4977-A3FE-AF83144F6195")
            };
            var rikimaru2 = new Rikimaru
            {
                Id = new Guid("4CA01206-BE49-4977-A3FE-AF83144F6196")
            };
            var client   = this.CreateHttpClient();
            var response = await client.GetAsync($"api/download/rikimarus?rikimaruIds={rikimaru.Id}&rikimaruIds={rikimaru2.Id}");

            var responseString = await response.Content.ReadAsStringAsync();

            Assert.That(
                response.StatusCode,
                Is.EqualTo(HttpStatusCode.OK),
                $"Response was: {responseString}.");

            Assert.That(
                response.Content.Headers.ContentDisposition.FileName,
                Does.Match("20.+\\.zip"));
        }