Browse Source

File result improved.

pull/344/head
Sebastian 7 years ago
parent
commit
689f1b4f81
  1. 4
      Dockerfile
  2. 2
      src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
  3. 2
      src/Squidex/Areas/Api/Controllers/Backups/BackupContentController.cs
  4. 2
      src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs
  5. 8
      src/Squidex/Pipeline/FileCallbackResult.cs
  6. 13
      src/Squidex/Pipeline/FileCallbackResultExecutor.cs

4
Dockerfile

@ -38,7 +38,9 @@ FROM microsoft/dotnet:2.2-runtime-deps-alpine
WORKDIR /app
# add libuv
RUN apk add --no-cache libuv \
RUN apk update \
&& apk add --no-cache libc6-compat \
&& apk add --no-cache libuv \
&& ln -s /usr/lib/libuv.so.1 /usr/lib/libuv.so
# Copy from build stage

2
src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs

@ -70,7 +70,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
Response.Headers[HeaderNames.ETag] = entity.FileVersion.ToString();
return new FileCallbackResult(entity.MimeType, entity.FileName, async bodyStream =>
return new FileCallbackResult(entity.MimeType, entity.FileName, true, async bodyStream =>
{
var assetId = entity.Id.ToString();

2
src/Squidex/Areas/Api/Controllers/Backups/BackupContentController.cs

@ -45,7 +45,7 @@ namespace Squidex.Areas.Api.Controllers.Backups
[AllowAnonymous]
public IActionResult GetBackupContent(string app, Guid id)
{
return new FileCallbackResult("application/zip", "Backup.zip", bodyStream =>
return new FileCallbackResult("application/zip", "Backup.zip", false, bodyStream =>
{
return assetStore.DownloadAsync(id.ToString(), 0, null, bodyStream);
});

2
src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs

@ -64,7 +64,7 @@ namespace Squidex.Areas.Api.Controllers.Statistics
{
var today = DateTime.Today;
return new FileCallbackResult("text/csv", $"Usage-{today:yyy-MM-dd}.csv", stream =>
return new FileCallbackResult("text/csv", $"Usage-{today:yyy-MM-dd}.csv", false, stream =>
{
return appLogStore.ReadLogAsync(App, today.AddDays(-30), today, stream);
});

8
src/Squidex/Pipeline/FileCallbackResult.cs

@ -13,15 +13,19 @@ using Microsoft.Extensions.DependencyInjection;
namespace Squidex.Pipeline
{
public class FileCallbackResult : FileResult
public sealed class FileCallbackResult : FileResult
{
public bool Send404 { get; }
public Func<Stream, Task> Callback { get; }
public FileCallbackResult(string contentType, string name, Func<Stream, Task> callback)
public FileCallbackResult(string contentType, string name, bool send404, Func<Stream, Task> callback)
: base(contentType)
{
FileDownloadName = name;
Send404 = send404;
Callback = callback;
}

13
src/Squidex/Pipeline/FileCallbackResultExecutor.cs

@ -30,10 +30,17 @@ namespace Squidex.Pipeline
}
catch (Exception e)
{
Logger.LogCritical(new EventId(99), e, "Failed to send result.");
if (!context.HttpContext.Response.HasStarted && result.Send404)
{
context.HttpContext.Response.Headers.Clear();
context.HttpContext.Response.StatusCode = 404;
context.HttpContext.Response.Headers.Clear();
context.HttpContext.Response.StatusCode = 404;
Logger.LogCritical(new EventId(99), e, "Failed to send result.");
}
else
{
throw;
}
}
}
}

Loading…
Cancel
Save