Browse Source

Simplify auto format.

pull/882/head
Sebastian 4 years ago
parent
commit
1c98c2b376
  1. 2
      backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  2. 2
      backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
  3. 35
      backend/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetContentQueryDto.cs
  4. 16
      backend/src/Squidex/Squidex.csproj

2
backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -31,7 +31,7 @@
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="OpenTelemetry.Api" Version="1.1.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets" Version="3.4.0" />
<PackageReference Include="Squidex.Assets" Version="3.6.0" />
<PackageReference Include="Squidex.Caching" Version="1.9.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="2.13.0" />
<PackageReference Include="Squidex.Log" Version="1.6.0" />

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

@ -142,7 +142,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
Response.Headers[HeaderNames.CacheControl] = $"public,max-age={request.CacheDuration}";
}
var resizeOptions = request.ToResizeOptions(asset, HttpContext.Request);
var resizeOptions = request.ToResizeOptions(asset, assetThumbnailGenerator, HttpContext.Request);
var contentLength = (long?)null;
var contentCallback = (FileCallback?)null;

35
backend/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetContentQueryDto.cs

@ -99,7 +99,7 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models
[FromQuery(Name = "format")]
public ImageFormat? Format { get; set; }
public ResizeOptions ToResizeOptions(IAssetEntity asset, HttpRequest request)
public ResizeOptions ToResizeOptions(IAssetEntity asset, IAssetThumbnailGenerator assetThumbnailGenerator, HttpRequest request)
{
Guard.NotNull(asset);
@ -111,31 +111,45 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models
result.FocusY = y;
result.TargetWidth = Width;
result.TargetHeight = Height;
result.Format = GetFormat(assetThumbnailGenerator, request);
if (Auto && request.Headers.TryGetValue("Accept", out var accept))
return result;
}
private ImageFormat? GetFormat(IAssetThumbnailGenerator assetThumbnailGenerator, HttpRequest request)
{
var formats = new List<ImageFormat>();
if (Format.HasValue || !Auto)
{
return Format;
}
if (accept.Any(x => x.Contains("image/avif", StringComparison.OrdinalIgnoreCase)))
bool Accepts(string mimeType)
{
formats.Add(ImageFormat.AVIF);
request.Headers.TryGetValue("Accept", out var accept);
return accept.Any(x => x.Contains(mimeType, StringComparison.OrdinalIgnoreCase)) && assetThumbnailGenerator.CanReadAndWrite(mimeType);
}
if (accept.Any(x => x.Contains("image/webp", StringComparison.OrdinalIgnoreCase)))
if (Accepts("image/avif"))
{
formats.Add(ImageFormat.WEBP);
return ImageFormat.AVIF;
}
result.Formats = formats.ToArray();
if (Accepts("image/webp"))
{
return ImageFormat.WEBP;
}
return result;
return Format;
}
private (float?, float?) GetFocusPoint(IAssetEntity asset)
{
if (!IgnoreFocus)
if (IgnoreFocus)
{
return (null, null);
}
if (FocusX != null && FocusY != null)
{
return (FocusX.Value, FocusY.Value);
@ -148,7 +162,6 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models
{
return (focusX.Value, focusY.Value);
}
}
return (null, null);
}

16
backend/src/Squidex/Squidex.csproj

@ -71,14 +71,14 @@
<PackageReference Include="OrleansDashboard.EmbeddedAssets" Version="3.6.1" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="ReportGenerator" Version="5.0.3" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets.Azure" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.S3" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="3.4.0" />
<PackageReference Include="Squidex.Assets.Azure" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.S3" Version="3.6.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="3.6.0" />
<PackageReference Include="Squidex.Caching.Orleans" Version="1.9.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="8.21.0" />
<PackageReference Include="Squidex.Hosting" Version="2.13.0" />

Loading…
Cancel
Save