From 6dad03ea75958c2f7974b68e84ee59d43a73549a 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 cb8b3ac6..58d4c300 100644 --- a/src/browser/HttpClient.zig +++ b/src/browser/HttpClient.zig @@ -1033,7 +1033,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 9f39ef76..ca238a48 100644 --- a/src/browser/webapi/net/Fetch.zig +++ b/src/browser/webapi/net/Fetch.zig @@ -181,11 +181,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 1a6f9a13..a62a63f7 100644 --- a/src/browser/webapi/net/XMLHttpRequest.zig +++ b/src/browser/webapi/net/XMLHttpRequest.zig @@ -418,12 +418,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| {