@@ -22,6 +22,7 @@ const user_agent = "Lightpanda.io/1.0";
2222
2323pub const Loader = struct {
2424 client : std.http.Client ,
25+ server_header_buffer : [1024 ]u8 = undefined ,
2526
2627 pub const Response = struct {
2728 alloc : std.mem.Allocator ,
@@ -45,42 +46,26 @@ pub const Loader = struct {
4546 self .client .deinit ();
4647 }
4748
48- // the caller must deinit the FetchResult.
49- pub fn fetch (self : * Loader , alloc : std.mem.Allocator , uri : std.Uri ) ! std.http.Client.FetchResult {
50- var headers = try std .http .Headers .initList (alloc , &[_ ]std.http.Field {
51- .{ .name = "User-Agent" , .value = user_agent },
52- .{ .name = "Accept" , .value = "*/*" },
53- .{ .name = "Accept-Language" , .value = "en-US,en;q=0.5" },
54- });
55- defer headers .deinit ();
56-
57- return try self .client .fetch (alloc , .{
58- .location = .{ .uri = uri },
59- .headers = headers ,
60- .payload = .none ,
61- });
62- }
63-
6449 // see
6550 // https://ziglang.org/documentation/master/std/#A;std:http.Client.fetch
6651 // for reference.
6752 // The caller is responsible for calling `deinit()` on the `Response`.
6853 pub fn get (self : * Loader , alloc : std.mem.Allocator , uri : std.Uri ) ! Response {
69- var headers = try std .http .Headers .initList (alloc , &[_ ]std.http.Field {
70- .{ .name = "User-Agent" , .value = user_agent },
71- .{ .name = "Accept" , .value = "*/*" },
72- .{ .name = "Accept-Language" , .value = "en-US,en;q=0.5" },
73- });
74- defer headers .deinit ();
75-
7654 var resp = Response {
7755 .alloc = alloc ,
7856 .req = try alloc .create (std .http .Client .Request ),
7957 };
8058 errdefer alloc .destroy (resp .req );
8159
82- resp .req .* = try self .client .open (.GET , uri , headers , .{
83- .handle_redirects = true , // TODO handle redirects manually
60+ resp .req .* = try self .client .open (.GET , uri , .{
61+ .headers = .{
62+ .user_agent = .{ .override = user_agent },
63+ },
64+ .extra_headers = &.{
65+ .{ .name = "Accept" , .value = "*/*" },
66+ .{ .name = "Accept-Language" , .value = "en-US,en;q=0.5" },
67+ },
68+ .server_header_buffer = & self .server_header_buffer ,
8469 });
8570 errdefer resp .req .deinit ();
8671
@@ -92,13 +77,13 @@ pub const Loader = struct {
9277 }
9378};
9479
95- test "basic url fetch " {
80+ test "basic url get " {
9681 const alloc = std .testing .allocator ;
9782 var loader = Loader .init (alloc );
9883 defer loader .deinit ();
9984
100- var result = try loader .fetch (alloc , "https://en.wikipedia.org/wiki/Main_Page" );
85+ var result = try loader .get (alloc , "https://en.wikipedia.org/wiki/Main_Page" );
10186 defer result .deinit ();
10287
103- try std .testing .expect (result .status == std .http .Status .ok );
88+ try std .testing .expect (result .req . response . status == std .http .Status .ok );
10489}
0 commit comments