test fixes and new product advisories work

This commit is contained in:
master
2026-01-28 02:30:48 +02:00
parent 82caceba56
commit 644887997c
288 changed files with 69101 additions and 375 deletions

View File

@@ -57,24 +57,28 @@ internal static class FederationEndpointExtensions
CompressionLevel = compressLevel
};
// Set response headers for streaming
context.Response.ContentType = "application/zstd";
var exportTimestamp = timeProvider.GetUtcNow().UtcDateTime;
context.Response.Headers.ContentDisposition =
$"attachment; filename=\"feedser-bundle-{exportTimestamp.ToString("yyyyMMdd-HHmmss", CultureInfo.InvariantCulture)}.zst\"";
// Export directly to response stream
// Export to memory first so we can set headers before writing body
// (HTTP headers must be set before any body content is written)
using var bufferStream = new MemoryStream();
var result = await exportService.ExportToStreamAsync(
context.Response.Body,
bufferStream,
sinceCursor,
exportOptions,
cancellationToken);
// Add metadata headers
// Now set all response headers before writing body
context.Response.ContentType = "application/zstd";
var exportTimestamp = timeProvider.GetUtcNow().UtcDateTime;
context.Response.Headers.ContentDisposition =
$"attachment; filename=\"feedser-bundle-{exportTimestamp.ToString("yyyyMMdd-HHmmss", CultureInfo.InvariantCulture)}.zst\"";
context.Response.Headers.Append("X-Bundle-Hash", result.BundleHash);
context.Response.Headers.Append("X-Export-Cursor", result.ExportCursor);
context.Response.Headers.Append("X-Items-Count", result.Counts.Total.ToString());
// Write the buffered content to response
bufferStream.Position = 0;
await bufferStream.CopyToAsync(context.Response.Body, cancellationToken);
return HttpResults.Empty;
})
.WithName("ExportFederationBundle")