From 43a558f5aefc540ab86cd9974c1fb47a1c1c10dd Mon Sep 17 00:00:00 2001 From: Francis Bouvier Date: Thu, 18 Apr 2024 12:10:20 +0200 Subject: [PATCH] Make getParams return nullable Signed-off-by: Francis Bouvier --- src/cdp/browser.zig | 3 +-- src/cdp/cdp.zig | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/cdp/browser.zig b/src/cdp/browser.zig index 5ba2d05b..12f6e4d0 100644 --- a/src/cdp/browser.zig +++ b/src/cdp/browser.zig @@ -67,7 +67,6 @@ fn browserSetDownloadBehavior( downloadPath: ?[]const u8 = null, eventsEnabled: ?bool = null, }; - const params = try getParams(alloc, Params, scanner); - std.log.debug("params {any}", .{params}); + _ = try getParams(alloc, Params, scanner); return result(alloc, id, null, null, null); } diff --git a/src/cdp/cdp.zig b/src/cdp/cdp.zig index c3a93e89..def8e2ff 100644 --- a/src/cdp/cdp.zig +++ b/src/cdp/cdp.zig @@ -125,13 +125,22 @@ pub fn getParams( alloc: std.mem.Allocator, comptime T: type, scanner: *std.json.Scanner, -) !T { - try checkKey("params", (try scanner.next()).string); +) !?T { + + // if next token is the end of the object, there is no "params" + const t = try scanner.next(); + if (t == .object_end) return null; + + // if next token is not "params" there is no "params" + if (!std.mem.eql(u8, "params", t.string)) return null; + + // parse "params" const options = std.json.ParseOptions{ .max_value_len = scanner.input.len, .allocate = .alloc_if_needed, }; - return std.json.innerParse(T, alloc, scanner, options); + const params = try std.json.innerParse(T, alloc, scanner, options); + return params; } pub fn getSessionID(scanner: *std.json.Scanner) !?[]const u8 {