@@ -9,7 +9,19 @@ const BrowserContext = @import("cdp/cdp.zig").BrowserContext;
99export fn lightpanda_app_init () ? * anyopaque {
1010 const allocator = std .heap .c_allocator ;
1111
12- const app = App .init (allocator , .{ .run_mode = .fetch , .tls_verify_host = false }) catch return null ;
12+ const app = App .init (allocator , .{
13+ // .run_mode = .serve,
14+ // .tls_verify_host = false
15+ .run_mode = .serve ,
16+ .tls_verify_host = false ,
17+ // .http_proxy = null,
18+ // .proxy_bearer_token = args.proxyBearerToken(),
19+ // .tls_verify_host = args.tlsVerifyHost(),
20+ // .http_timeout_ms = args.httpTimeout(),
21+ // .http_connect_timeout_ms = args.httpConnectTiemout(),
22+ // .http_max_host_open = args.httpMaxHostOpen(),
23+ // .http_max_concurrent = args.httpMaxConcurrent(),
24+ }) catch return null ;
1325
1426 return app ;
1527}
@@ -45,6 +57,11 @@ export fn lightpanda_session_create_page(session_ptr: *anyopaque) ?*anyopaque {
4557 return page ;
4658}
4759
60+ export fn lightpanda_session_page (session_ptr : * anyopaque ) ? * anyopaque {
61+ const session : * Session = @ptrCast (@alignCast (session_ptr ));
62+ return & session .page ;
63+ }
64+
4865export fn lightpanda_page_navigate (page_ptr : * anyopaque , url : [* :0 ]const u8 ) void {
4966 const page : * Page = @ptrCast (@alignCast (page_ptr ));
5067 page .navigate (std .mem .span (url ), .{}) catch return ;
@@ -72,19 +89,11 @@ const NativeClient = struct {
7289 const slice = try self .allocator .dupeZ (u8 , serialized );
7390 defer self .allocator .free (slice );
7491 self .handler (self .ctx , slice .ptr );
75-
76- // try self.serialized.append(self.allocator, serialized);
77-
78- // const value = try std.json.parseFromSliceLeaky(std.json.Value, self.allocator, serialized, .{});
79- // try self.sent.append(self.allocator, value);
80- // @panic("trying to send JSON to nativeClient");
8192 }
8293
8394 pub fn sendJSONRaw (self : * NativeClient , buf : std .ArrayListUnmanaged (u8 )) ! void {
84- // const value = try std.json.parseFromSliceLeaky(std.json.Value, self.allocator, buf.items, .{});
85- // try self.sent.append(self.allocator, value);
86- // @panic("trying to send raw JSON to nativeClient");
87- const slice = try self .allocator .dupeZ (u8 , buf .items );
95+ const msg = buf .items [10.. ]; // CDP adds 10 0s for a WebSocket header.
96+ const slice = try self .allocator .dupeZ (u8 , msg );
8897 defer self .allocator .free (slice );
8998 self .handler (self .ctx , slice .ptr );
9099 }
@@ -143,6 +152,11 @@ export fn lightpanda_cdp_browser_context(cdp_ptr: *anyopaque) *anyopaque {
143152 return & cdp .browser_context .? ;
144153}
145154
155+ export fn lightpanda_cdp_page_wait (cdp_ptr : * anyopaque , ms : i32 ) c_int {
156+ const cdp : * CDP = @ptrCast (@alignCast (cdp_ptr ));
157+ return @intFromEnum (cdp .pageWait (ms ));
158+ }
159+
146160export fn lightpanda_browser_context_session (browser_context_ptr : * anyopaque ) * anyopaque {
147161 const browser_context : * BrowserContext (CDP ) = @ptrCast (@alignCast (browser_context_ptr ));
148162 return browser_context .session ;
0 commit comments