ApiStreamMessage

This commit is contained in:
Pilzinsel64
2025-10-31 11:36:28 +01:00
parent d8b89379cc
commit ba59f7df79
6 changed files with 32 additions and 6 deletions

View File

@@ -464,6 +464,8 @@ public class ApiServer : IApiServer
// Set response header
Log.Debug("Set response headers");
context.Response.AppendHeader("API-VERSION", ApiVersion.ToString());
if (result.Original.Message is ApiRawMessage apiRawMessage && !string.IsNullOrWhiteSpace(apiRawMessage.FileName))
context.Response.AppendHeader("Content-Disposition", $"filename=\"{apiRawMessage.FileName}\"");
// Set response parameters
Log.Debug("Set response parameters");
@@ -486,6 +488,14 @@ public class ApiServer : IApiServer
context.Response.OutputStream.Write(resultBytes, 0, resultBytes.Length);
context.Response.OutputStream.Flush();
}
else if (result.ResultContent is Stream resultStream)
{
Log.Info("Sending stream response for " + context.Request.RawUrl);
context.Response.ContentType = "application/octet-stream";
resultStream.CopyTo(context.Response.OutputStream);
context.Response.OutputStream.Flush();
resultStream.Close();
}
Log.Debug("Finish response");
close(false);
@@ -528,8 +538,10 @@ public class ApiServer : IApiServer
return new(result, null);
// Return result with raw data
if (result.Message is ApiRawMessage dataMsg)
if (result.Message is ApiRawByteMessage dataMsg)
return new(result, dataMsg.Data);
if (result.Message is ApiRawStreamMessage streamMsg)
return new(result, streamMsg.Data);
// Serializer
Log.Debug("Serialize message");