From 9e8b765f7a9153e9c8afc3fbf29e8c26af417649 Mon Sep 17 00:00:00 2001 From: Francis Bouvier Date: Tue, 16 Apr 2024 17:19:50 +0200 Subject: [PATCH] Allow method with sessionId and use it when appropriate (*.enable) Signed-off-by: Francis Bouvier --- src/cdp/cdp.zig | 30 ++++++++++++++++++++++++++++++ src/cdp/log.zig | 14 +++++++++----- src/cdp/network.zig | 14 +++++++++----- src/cdp/page.zig | 14 +++++++++----- src/cdp/runtime.zig | 14 +++++++++----- 5 files changed, 66 insertions(+), 20 deletions(-) diff --git a/src/cdp/cdp.zig b/src/cdp/cdp.zig index f9287c1c..8242c796 100644 --- a/src/cdp/cdp.zig +++ b/src/cdp/cdp.zig @@ -121,3 +121,33 @@ pub fn getParams( }; return std.json.innerParse(T, alloc, scanner, options); } + +pub fn getSessionID( + alloc: std.mem.Allocator, + scanner: *std.json.Scanner, +) ![]const u8 { + var n = (try scanner.next()).string; + if (std.mem.eql(u8, n, "params")) { + // ignore empty params + _ = (try scanner.next()).object_begin; + _ = (try scanner.next()).object_end; + n = (try scanner.next()).string; + } + try checkKey("sessionId", n); + const options = std.json.ParseOptions{ + .max_value_len = scanner.input.len, + .allocate = .alloc_if_needed, + }; + return std.json.innerParse([]const u8, alloc, scanner, options); +} + +// Common +// ------ + +pub const SessionID = "9559320D92474062597D9875C664CAC0"; + +pub const SessionIDResp = struct { + id: u64, + result: struct {} = .{}, + sessionId: []const u8, +}; diff --git a/src/cdp/log.zig b/src/cdp/log.zig index e90693d6..b7c46ce6 100644 --- a/src/cdp/log.zig +++ b/src/cdp/log.zig @@ -2,9 +2,10 @@ const std = @import("std"); const server = @import("../server.zig"); const Ctx = server.Cmd; -const result = @import("cdp.zig").result; -const getParams = @import("cdp.zig").getParams; -const stringify = @import("cdp.zig").stringify; +const cdp = @import("cdp.zig"); +const result = cdp.result; +const getParams = cdp.getParams; +const stringify = cdp.stringify; const LogMethods = enum { enable, @@ -27,8 +28,11 @@ pub fn log( fn enable( alloc: std.mem.Allocator, id: u64, - _: *std.json.Scanner, + scanner: *std.json.Scanner, _: *Ctx, ) ![]const u8 { - return result(alloc, id, null, null); + return stringify(alloc, cdp.SessionIDResp{ + .id = id, + .sessionId = try cdp.getSessionID(alloc, scanner), + }); } diff --git a/src/cdp/network.zig b/src/cdp/network.zig index 354291be..a81bfdd2 100644 --- a/src/cdp/network.zig +++ b/src/cdp/network.zig @@ -2,9 +2,10 @@ const std = @import("std"); const server = @import("../server.zig"); const Ctx = server.Cmd; -const result = @import("cdp.zig").result; -const getParams = @import("cdp.zig").getParams; -const stringify = @import("cdp.zig").stringify; +const cdp = @import("cdp.zig"); +const result = cdp.result; +const getParams = cdp.getParams; +const stringify = cdp.stringify; const NetworkMethods = enum { enable, @@ -27,8 +28,11 @@ pub fn network( fn enable( alloc: std.mem.Allocator, id: u64, - _: *std.json.Scanner, + scanner: *std.json.Scanner, _: *Ctx, ) ![]const u8 { - return result(alloc, id, null, null); + return stringify(alloc, cdp.SessionIDResp{ + .id = id, + .sessionId = try cdp.getSessionID(alloc, scanner), + }); } diff --git a/src/cdp/page.zig b/src/cdp/page.zig index e9ab7e92..006496eb 100644 --- a/src/cdp/page.zig +++ b/src/cdp/page.zig @@ -2,9 +2,10 @@ const std = @import("std"); const server = @import("../server.zig"); const Ctx = server.Cmd; -const result = @import("cdp.zig").result; -const getParams = @import("cdp.zig").getParams; -const stringify = @import("cdp.zig").stringify; +const cdp = @import("cdp.zig"); +const result = cdp.result; +const getParams = cdp.getParams; +const stringify = cdp.stringify; const PageMethods = enum { enable, @@ -33,10 +34,13 @@ pub fn page( fn enable( alloc: std.mem.Allocator, id: u64, - _: *std.json.Scanner, + scanner: *std.json.Scanner, _: *Ctx, ) ![]const u8 { - return result(alloc, id, null, null); + return stringify(alloc, cdp.SessionIDResp{ + .id = id, + .sessionId = try cdp.getSessionID(alloc, scanner), + }); } fn getFrameTree( diff --git a/src/cdp/runtime.zig b/src/cdp/runtime.zig index e2330b39..75fdf60f 100644 --- a/src/cdp/runtime.zig +++ b/src/cdp/runtime.zig @@ -2,9 +2,10 @@ const std = @import("std"); const server = @import("../server.zig"); const Ctx = server.Cmd; -const result = @import("cdp.zig").result; -const getParams = @import("cdp.zig").getParams; -const stringify = @import("cdp.zig").stringify; +const cdp = @import("cdp.zig"); +const result = cdp.result; +const getParams = cdp.getParams; +const stringify = cdp.stringify; const RuntimeMethods = enum { enable, @@ -29,10 +30,13 @@ pub fn runtime( fn enable( alloc: std.mem.Allocator, id: u64, - _: *std.json.Scanner, + scanner: *std.json.Scanner, _: *Ctx, ) ![]const u8 { - return result(alloc, id, null, null); + return stringify(alloc, cdp.SessionIDResp{ + .id = id, + .sessionId = try cdp.getSessionID(alloc, scanner), + }); } fn runIfWaitingForDebugger(