diff --git a/src/browser/tests/net/fetch.html b/src/browser/tests/net/fetch.html index 2d8c6266..a545a452 100644 --- a/src/browser/tests/net/fetch.html +++ b/src/browser/tests/net/fetch.html @@ -180,6 +180,13 @@ testing.expectEqual(true, response.body !== null); testing.expectEqual(true, response.body instanceof ReadableStream); + + const buf = await response.arrayBuffer() + restore(); + + const uint8array = new Uint8Array(buf); + const decoder = new TextDecoder('utf-8'); + testing.expectEqual('1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890', decoder.decode(uint8array)); }); diff --git a/src/browser/webapi/net/Response.zig b/src/browser/webapi/net/Response.zig index 2884c825..ba1a754d 100644 --- a/src/browser/webapi/net/Response.zig +++ b/src/browser/webapi/net/Response.zig @@ -143,6 +143,10 @@ pub fn getJson(self: *Response, page: *Page) !js.Promise { return local.resolvePromise(try value.persist()); } +pub fn arrayBuffer(self: *const Response, page: *Page) !js.Promise { + return page.js.local.?.resolvePromise(js.ArrayBuffer{ .values = self._body orelse "" }); +} + pub const JsApi = struct { pub const bridge = js.Bridge(Response); @@ -165,6 +169,7 @@ pub const JsApi = struct { pub const body = bridge.accessor(Response.getBody, null, .{}); pub const url = bridge.accessor(Response.getURL, null, .{}); pub const redirected = bridge.accessor(Response.isRedirected, null, .{}); + pub const arrayBuffer = bridge.function(Response.arrayBuffer, .{}); }; const testing = @import("../../../testing.zig");