Copilot
1 month ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with
7 additions and
7 deletions
-
backend/src/Squidex.Web/CommandMiddlewares/ETagCommandMiddleware.cs
-
backend/src/Squidex.Web/ETagExtensions.cs
-
backend/src/Squidex/Areas/Api/Controllers/Apps/AppImageController.cs
-
backend/src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
-
backend/tests/Squidex.Web.Tests/CommandMiddlewares/ETagCommandMiddlewareTests.cs
|
|
|
@ -54,6 +54,6 @@ public class ETagCommandMiddleware(IHttpContextAccessor httpContextAccessor) : I |
|
|
|
|
|
|
|
private static void SetResponsEtag(HttpContext httpContext, long version) |
|
|
|
{ |
|
|
|
httpContext.Response.Headers[HeaderNames.ETag] = version.ToString(CultureInfo.InvariantCulture); |
|
|
|
httpContext.Response.Headers[HeaderNames.ETag] = $"\"{version.ToString(CultureInfo.InvariantCulture)}\""; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -48,13 +48,13 @@ public static class ETagExtensions |
|
|
|
hasher.AppendLong(item.Version); |
|
|
|
} |
|
|
|
|
|
|
|
return hasher.GetHexStringAndReset(); |
|
|
|
return hasher.GetQuotedHexStringAndReset(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public static string ToEtag<T>(this T entity) where T : Entity |
|
|
|
{ |
|
|
|
return entity.Version.ToString(CultureInfo.InvariantCulture); |
|
|
|
return $"\"{entity.Version.ToString(CultureInfo.InvariantCulture)}\""; |
|
|
|
} |
|
|
|
|
|
|
|
public static bool TryParseEtagVersion(this HttpContext httpContext, string header, out long version) |
|
|
|
|
|
|
|
@ -47,7 +47,7 @@ public sealed class AppImageController( |
|
|
|
|
|
|
|
var etag = App.Image.Etag; |
|
|
|
|
|
|
|
Response.Headers[HeaderNames.ETag] = etag; |
|
|
|
Response.Headers[HeaderNames.ETag] = $"\"{etag}\""; |
|
|
|
|
|
|
|
var callback = new FileCallback(async (body, range, ct) => |
|
|
|
{ |
|
|
|
|
|
|
|
@ -119,7 +119,7 @@ public sealed class AssetContentController( |
|
|
|
return NotFound(); |
|
|
|
} |
|
|
|
|
|
|
|
Response.Headers[HeaderNames.ETag] = asset.FileVersion.ToString(CultureInfo.InvariantCulture); |
|
|
|
Response.Headers[HeaderNames.ETag] = $"\"{asset.FileVersion.ToString(CultureInfo.InvariantCulture)}\""; |
|
|
|
|
|
|
|
if (request.CacheDuration > 0) |
|
|
|
{ |
|
|
|
|
|
|
|
@ -75,7 +75,7 @@ public class ETagCommandMiddlewareTests : GivenContext |
|
|
|
|
|
|
|
await HandleAsync(new CreateContent(), actual); |
|
|
|
|
|
|
|
Assert.Equal(new StringValues("17"), httpContextAccessor.HttpContext!.Response.Headers[HeaderNames.ETag]); |
|
|
|
Assert.Equal(new StringValues("\"17\""), httpContextAccessor.HttpContext!.Response.Headers[HeaderNames.ETag]); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -85,7 +85,7 @@ public class ETagCommandMiddlewareTests : GivenContext |
|
|
|
|
|
|
|
await HandleAsync(new CreateContent(), actual); |
|
|
|
|
|
|
|
Assert.Equal(new StringValues("17"), httpContextAccessor.HttpContext!.Response.Headers[HeaderNames.ETag]); |
|
|
|
Assert.Equal(new StringValues("\"17\""), httpContextAccessor.HttpContext!.Response.Headers[HeaderNames.ETag]); |
|
|
|
} |
|
|
|
|
|
|
|
private async Task<CommandContext> HandleAsync(ICommand command, object actual) |
|
|
|
|