Skip to content

Commit 25ed528

Browse files
committed
Expose APIs for pageWait
1 parent 5a7af39 commit 25ed528

File tree

3 files changed

+35
-12
lines changed

3 files changed

+35
-12
lines changed

include/lightpanda.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
#ifndef _LIGHTPANDA_H
22
#define _LIGHTPANDA_H
33

4+
typedef enum {
5+
done = 0,
6+
no_page = 1,
7+
extra_socket = 2,
8+
} Session_WaitResult;
9+
410
void* lightpanda_app_init();
511
void lightpanda_app_deinit(void* app_ptr);
612

@@ -10,6 +16,7 @@ void lightpanda_browser_deinit(void* browser_ptr);
1016
void* lightpanda_browser_new_session(void* browser_ptr);
1117

1218
void* lightpanda_session_create_page(void* session_ptr);
19+
void* lightpanda_session_page(void* session_ptr);
1320

1421
void lightpanda_page_navigate(void* page_ptr, const char *url);
1522

@@ -19,6 +26,8 @@ const char* lightpanda_cdp_create_browser_context(void* cdp_ptr);
1926
void* lightpanda_cdp_browser(void* cdp_ptr);
2027
void lightpanda_cdp_process_message(void* cdp_ptr, const char *msg);
2128
void* lightpanda_cdp_browser_context(void* cdp_ptr);
29+
Session_WaitResult lightpanda_cdp_page_wait(void* cdp_ptr, int ms);
30+
2231
void* lightpanda_browser_context_session(void* browser_context_ptr);
2332

2433
#endif

src/lib.zig

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,19 @@ const BrowserContext = @import("cdp/cdp.zig").BrowserContext;
99
export 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+
4865
export 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+
146160
export 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;

src/log.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const Opts = struct {
4949
filter_scopes: []const Scope = &.{},
5050
};
5151

52-
pub var opts = Opts{};
52+
pub var opts = Opts{ .level = .info, .format = .pretty };
5353

5454
// synchronizes writes to the output
5555
var out_lock: Thread.Mutex = .{};

0 commit comments

Comments
 (0)