From 2d4fa7f36213e23cccec3d88542dc3ecf1d40a34 Mon Sep 17 00:00:00 2001 From: Muki Kiboigo Date: Wed, 18 Mar 2026 11:34:44 -0700 Subject: [PATCH] add headerIterator to Http Response --- src/browser/HttpClient.zig | 6 +++++- src/browser/webapi/net/Fetch.zig | 9 ++++----- src/browser/webapi/net/XMLHttpRequest.zig | 11 +++++------ 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/browser/HttpClient.zig b/src/browser/HttpClient.zig index 62c5ef6f..43736ae3 100644 --- a/src/browser/HttpClient.zig +++ b/src/browser/HttpClient.zig @@ -1042,7 +1042,11 @@ pub const Response = struct { }; } - // TODO: Headers Iterator. + pub fn headerIterator(self: Response) HeaderIterator { + return switch (self.inner) { + .live => |live| live.responseHeaderIterator(), + }; + } pub fn abort(self: Response, err: anyerror) void { switch (self.inner) { diff --git a/src/browser/webapi/net/Fetch.zig b/src/browser/webapi/net/Fetch.zig index dc42f9b2..d26771e2 100644 --- a/src/browser/webapi/net/Fetch.zig +++ b/src/browser/webapi/net/Fetch.zig @@ -182,11 +182,10 @@ fn httpHeaderDoneCallback(response: HttpClient.Response) !bool { res._type = .basic; } - // TODO: Header Iterator - // var it = transfer.responseHeaderIterator(); - // while (it.next()) |hdr| { - // try res._headers.append(hdr.name, hdr.value, self._page); - // } + var it = response.headerIterator(); + while (it.next()) |hdr| { + try res._headers.append(hdr.name, hdr.value, self._page); + } return true; } diff --git a/src/browser/webapi/net/XMLHttpRequest.zig b/src/browser/webapi/net/XMLHttpRequest.zig index 7f19f3e6..c7b02e03 100644 --- a/src/browser/webapi/net/XMLHttpRequest.zig +++ b/src/browser/webapi/net/XMLHttpRequest.zig @@ -434,12 +434,11 @@ fn httpHeaderDoneCallback(response: HttpClient.Response) !bool { }; } - // TODO: Header Iterator - // var it = transfer.responseHeaderIterator(); - // while (it.next()) |hdr| { - // const joined = try std.fmt.allocPrint(self._arena, "{s}: {s}", .{ hdr.name, hdr.value }); - // try self._response_headers.append(self._arena, joined); - // } + var it = response.headerIterator(); + while (it.next()) |hdr| { + const joined = try std.fmt.allocPrint(self._arena, "{s}: {s}", .{ hdr.name, hdr.value }); + try self._response_headers.append(self._arena, joined); + } self._response_status = response.status().?; if (response.contentLength()) |cl| {