mirror of
https://github.com/jetzig-framework/jetzig.git
synced 2025-05-14 14:06:08 +00:00
Add gzip middleware
This commit is contained in:
parent
a0faada748
commit
ae44b1b21a
@ -2,6 +2,7 @@ const std = @import("std");
|
||||
const jetzig = @import("../jetzig.zig");
|
||||
|
||||
pub const HtmxMiddleware = @import("middleware/HtmxMiddleware.zig");
|
||||
pub const GzipMiddleware = @import("middleware/Gzip.zig");
|
||||
|
||||
const RouteOptions = struct {
|
||||
content: ?[]const u8 = null,
|
||||
|
13
src/jetzig/middleware/Gzip.zig
Normal file
13
src/jetzig/middleware/Gzip.zig
Normal file
@ -0,0 +1,13 @@
|
||||
const std = @import("std");
|
||||
const jetzig = @import("jetzig");
|
||||
|
||||
const err_msg = "Response was not compressed due to error: {s}";
|
||||
pub fn beforeResponse(request: *jetzig.http.Request, response: *jetzig.http.Response) !void {
|
||||
var compressed = std.ArrayList(u8).init(request.allocator);
|
||||
var reader = std.io.fixedBufferStream(response.content);
|
||||
std.compress.gzip.compress(reader.reader(), compressed.writer(), .{ .level = .fast }) catch |err|
|
||||
return request.server.logger.ERROR(err_msg, .{@errorName(err)});
|
||||
response.headers.append("Content-Encoding", "gzip") catch |err|
|
||||
return request.server.logger.ERROR(err_msg, .{@errorName(err)});
|
||||
response.content = compressed.items;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user