Fix compression middleware

This commit is contained in:
dongsu8142 2025-02-26 22:24:01 +09:00
parent 8a4f91f26a
commit 719bd300a7

View File

@ -28,17 +28,17 @@ pub fn beforeResponse(request: *jetzig.http.Request, response: *jetzig.http.Resp
const compressed = switch (encoding) { const compressed = switch (encoding) {
.gzip => jetzig.util.gzip(request.allocator, response.content, .{}) catch |err| .gzip => jetzig.util.gzip(request.allocator, response.content, .{}) catch |err|
return request.server.logger.logError(err), return request.server.logger.logError(@errorReturnTrace(), err),
.deflate => jetzig.util.deflate(request.allocator, response.content, .{}) catch |err| .deflate => jetzig.util.deflate(request.allocator, response.content, .{}) catch |err|
return request.server.logger.logError(err), return request.server.logger.logError(@errorReturnTrace(), err),
}; };
response.headers.append("Content-Encoding", @tagName(encoding)) catch |err| response.headers.append("Content-Encoding", @tagName(encoding)) catch |err|
return request.server.logger.logError(err); return request.server.logger.logError(@errorReturnTrace(), err);
// Make caching work // Make caching work
response.headers.append("Vary", "Accept-Encoding") catch |err| response.headers.append("Vary", "Accept-Encoding") catch |err|
return request.server.logger.logError(err); return request.server.logger.logError(@errorReturnTrace(), err);
response.content = compressed; response.content = compressed;
} }
@ -48,7 +48,7 @@ fn detectEncoding(request: *const jetzig.http.Request) ?Encoding {
while (headers_it.next()) |header| { while (headers_it.next()) |header| {
var it = std.mem.tokenizeScalar(u8, header.value, ','); var it = std.mem.tokenizeScalar(u8, header.value, ',');
while (it.next()) |param| { while (it.next()) |param| {
inline for (@typeInfo(Encoding).Enum.fields) |field| { inline for (@typeInfo(Encoding).@"enum".fields) |field| {
if (std.mem.eql(u8, field.name, jetzig.util.strip(param))) { if (std.mem.eql(u8, field.name, jetzig.util.strip(param))) {
return std.enums.nameCast(Encoding, field.name); return std.enums.nameCast(Encoding, field.name);
} }