@@ -22,6 +22,7 @@ const builtin = @import("builtin");
2222const Http = @import ("Http.zig" );
2323pub const Headers = Http .Headers ;
2424const Notification = @import ("../notification.zig" ).Notification ;
25+ const storage = @import ("../browser/storage/storage.zig" );
2526
2627const c = Http .c ;
2728
@@ -271,20 +272,6 @@ fn makeRequest(self: *Client, handle: *Handle, req: Request) !void {
271272 try conn .setBody (b );
272273 }
273274
274- // { // TODO move up to `fn request()`
275- // const aa = self.arena.allocator();
276- // var arr: std.ArrayListUnmanaged(u8) = .{};
277- // try req.cookie.forRequest(&uri, arr.writer(aa));
278-
279- // if (arr.items.len > 0) {
280- // try arr.append(aa, 0); //null terminate
281-
282- // // copies the value
283- // header_list = c.curl_slist_append(header_list, @ptrCast(arr.items.ptr));
284- // defer _ = self.arena.reset(.{ .retain_with_limit = 2048 });
285- // }
286- // }
287-
288275 try conn .secretHeaders (& header_list ); // Add headers that must be hidden from intercepts
289276 try errorCheck (c .curl_easy_setopt (easy , c .CURLOPT_HTTPHEADER , header_list .headers ));
290277 }
@@ -475,13 +462,24 @@ pub const RequestCookie = struct {
475462 origin : * const std.Uri ,
476463 jar : * @import ("../browser/storage/cookie.zig" ).Jar ,
477464
478- fn forRequest (self : * const RequestCookie , uri : * const std.Uri , writer : anytype ) ! void {
479- return self .jar .forRequest (uri , writer , .{
465+ pub fn headersForRequest (self : * const RequestCookie , temp : Allocator , url : [:0 ]const u8 , headers : * Headers ) ! void {
466+ const uri = std .Uri .parse (url ) catch | err | {
467+ log .warn (.http , "invalid url" , .{ .err = err , .url = url });
468+ return error .InvalidUrl ;
469+ };
470+
471+ var arr : std .ArrayListUnmanaged (u8 ) = .{};
472+ try self .jar .forRequest (& uri , arr .writer (temp ), .{
480473 .is_http = self .is_http ,
481474 .is_navigation = self .is_navigation ,
482475 .origin_uri = self .origin ,
483476 .prefix = "Cookie: " ,
484477 });
478+
479+ if (arr .items .len > 0 ) {
480+ try arr .append (temp , 0 ); //null terminate
481+ try headers .add (@ptrCast (arr .items .ptr ));
482+ }
485483 }
486484};
487485
@@ -491,7 +489,7 @@ pub const Request = struct {
491489 url : [:0 ]const u8 ,
492490 headers : Headers ,
493491 body : ? []const u8 = null ,
494- cookie : RequestCookie ,
492+ cookie_jar : * storage.CookieJar ,
495493
496494 // arbitrary data that can be associated with this request
497495 ctx : * anyopaque = undefined ,
@@ -616,7 +614,7 @@ pub const Transfer = struct {
616614 if (header .len > SET_COOKIE_LEN ) {
617615 if (std .ascii .eqlIgnoreCase (header [0.. SET_COOKIE_LEN ], "set-cookie:" )) {
618616 const value = std .mem .trimLeft (u8 , header [SET_COOKIE_LEN .. ], " " );
619- transfer .req .cookie . jar .populateFromResponse (& transfer .uri , value ) catch | err | {
617+ transfer .req .cookie_jar .populateFromResponse (& transfer .uri , value ) catch | err | {
620618 log .err (.http , "set cookie" , .{ .err = err , .req = transfer });
621619 };
622620 }
0 commit comments