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")); }
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")); }
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")); }