@@ -57,10 +57,8 @@ pub const HttpClient = struct {
5757 }
5858
5959 const uri = try Uri .parse (request .url );
60- // var server_header_buf: [4096]u8 = undefined;
6160
6261 var req = try self .client .request (request .method .? , uri , .{
63- // .server_header_buffer = &server_header_buf,
6462 .extra_headers = request .headers .items ,
6563 });
6664
@@ -71,7 +69,10 @@ pub const HttpClient = struct {
7169 }
7270
7371 if (request .body ) | body | {
74- try req .sendBodyComplete (body );
72+ var b = try req .sendBodyUnflushed (&.{});
73+ try b .writer .writeAll (body );
74+ try b .end ();
75+ try req .connection .? .flush ();
7576 } else {
7677 try req .sendBodiless ();
7778 }
@@ -83,16 +84,25 @@ pub const HttpClient = struct {
8384
8485 var header_iterator = raw_response .head .iterateHeaders ();
8586 while (header_iterator .next ()) | header | {
87+ std .debug .print ("{s}, {s}\n " , .{ header .name , header .value });
8688 const name = try self .allocator .dupe (u8 , header .name );
8789 const value = try self .allocator .dupe (u8 , header .value );
8890 try response .headers .put (name , value );
8991 }
9092
91- // Optimal size depends on how you will use the reader.
92- var reader_buffer : [100 ]u8 = undefined ;
93- const body_reader = raw_response .reader (& reader_buffer );
94- response .body = try body_reader .allocRemaining (self .allocator , .limited (std .math .maxInt (usize )));
93+ const decompress_buffer : []u8 = switch (raw_response .head .content_encoding ) {
94+ .identity = > &.{},
95+ .zstd = > try self .allocator .alloc (u8 , std .compress .zstd .default_window_len ),
96+ .deflate , .gzip = > try self .allocator .alloc (u8 , std .compress .flate .max_window_len ),
97+ .compress = > return error .UnsupportedCompressionMethod ,
98+ };
99+ defer self .allocator .free (decompress_buffer );
100+ var transfer_buffer : [64 ]u8 = undefined ;
101+ var decompress : http.Decompress = undefined ;
102+ const reader = raw_response .readerDecompressing (& transfer_buffer , & decompress , decompress_buffer );
95103
104+ // Optimal size depends on how you will use the reader.
105+ response .body = try reader .allocRemaining (self .allocator , .unlimited );
96106 return response ;
97107 }
98108
0 commit comments