From 1a448b0b32c881d72fab3a1886d1b8f43e0bcf9e Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Fri, 9 Feb 2024 12:42:19 +0100 Subject: [PATCH] xhr: response_type getter/setter --- src/xhr/xhr.zig | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/xhr/xhr.zig b/src/xhr/xhr.zig index d294c3ef..e7eef08c 100644 --- a/src/xhr/xhr.zig +++ b/src/xhr/xhr.zig @@ -466,6 +466,46 @@ pub const XMLHttpRequest = struct { self.dispatchProgressEvent("loadend", .{}); } + pub fn get_responseType(self: *XMLHttpRequest) []const u8 { + return switch (self.response_type) { + .Empty => "", + .ArrayBuffer => "arraybuffer", + .Blob => "blob", + .Document => "document", + .JSON => "json", + .Text => "text", + }; + } + + pub fn set_responseType(self: *XMLHttpRequest, rtype: []const u8) !void { + if (self.state == LOADING or self.state == DONE) return DOMError.InvalidState; + + if (std.mem.eql(u8, rtype, "")) { + self.response_type = .Empty; + return; + } + if (std.mem.eql(u8, rtype, "arraybuffer")) { + self.response_type = .ArrayBuffer; + return; + } + if (std.mem.eql(u8, rtype, "blob")) { + self.response_type = .Blob; + return; + } + if (std.mem.eql(u8, rtype, "document")) { + self.response_type = .Document; + return; + } + if (std.mem.eql(u8, rtype, "json")) { + self.response_type = .JSON; + return; + } + if (std.mem.eql(u8, rtype, "text")) { + self.response_type = .Text; + return; + } + } + pub fn get_responseText(self: *XMLHttpRequest) ![]const u8 { if (self.response_type != .Empty and self.response_type != .Text) return DOMError.InvalidState;