@@ -330,15 +330,15 @@ pub export fn gitlab_api_mcp_request(
330330 } else null ;
331331
332332 // Fetch the request (Zig 0.15 API — replaces open/send/wait)
333- var response_storage = std .ArrayList ( u8 ) .init (allocator );
334- defer response_storage .deinit ();
333+ var aw : std.Io.Writer.Allocating = .init (allocator );
334+ defer aw .deinit ();
335335
336336 const fetch_result = client .fetch (.{
337337 .method = http_method ,
338338 .location = .{ .uri = uri },
339339 .extra_headers = & headers_buf ,
340340 .payload = body_slice ,
341- .response_storage = .{ . dynamic = & response_storage } ,
341+ .response_writer = & aw . writer ,
342342 }) catch return -4 ;
343343
344344 // Handle rate limiting (HTTP 429)
@@ -350,8 +350,9 @@ pub export fn gitlab_api_mcp_request(
350350 }
351351
352352 // Handle server errors
353- const bytes_read = @min (response_storage .items .len , cap );
354- @memcpy (out_buf [0.. bytes_read ], response_storage .items [0.. bytes_read ]);
353+ const response_bytes = aw .writer .buffered ();
354+ const bytes_read = @min (response_bytes .len , cap );
355+ @memcpy (out_buf [0.. bytes_read ], response_bytes [0.. bytes_read ]);
355356 out_len .* = @intCast (bytes_read );
356357
357358 if (status_code >= 500 ) {
@@ -436,15 +437,15 @@ pub export fn gitlab_api_mcp_graphql(
436437 };
437438
438439 // Fetch the request (Zig 0.15 API — replaces open/send/wait)
439- var response_storage = std .ArrayList ( u8 ) .init (allocator );
440- defer response_storage .deinit ();
440+ var aw : std.Io.Writer.Allocating = .init (allocator );
441+ defer aw .deinit ();
441442
442443 const fetch_result = client .fetch (.{
443444 .method = .POST ,
444445 .location = .{ .uri = uri },
445446 .extra_headers = & headers_buf ,
446447 .payload = gql_body ,
447- .response_storage = .{ . dynamic = & response_storage } ,
448+ .response_writer = & aw . writer ,
448449 }) catch return -4 ;
449450
450451 const status_code = @intFromEnum (fetch_result .status );
@@ -454,8 +455,9 @@ pub export fn gitlab_api_mcp_graphql(
454455 return -3 ;
455456 }
456457
457- const bytes_read = @min (response_storage .items .len , cap );
458- @memcpy (out_buf [0.. bytes_read ], response_storage .items [0.. bytes_read ]);
458+ const response_bytes = aw .writer .buffered ();
459+ const bytes_read = @min (response_bytes .len , cap );
460+ @memcpy (out_buf [0.. bytes_read ], response_bytes [0.. bytes_read ]);
459461 out_len .* = @intCast (bytes_read );
460462 return 0 ;
461463}
@@ -528,15 +530,15 @@ pub export fn gitlab_api_mcp_setup_mirror(
528530 };
529531
530532 // Fetch the request (Zig 0.15 API — replaces open/send/wait)
531- var response_storage = std .ArrayList ( u8 ) .init (allocator );
532- defer response_storage .deinit ();
533+ var aw : std.Io.Writer.Allocating = .init (allocator );
534+ defer aw .deinit ();
533535
534536 const fetch_result = client .fetch (.{
535537 .method = .POST ,
536538 .location = .{ .uri = uri },
537539 .extra_headers = & headers_buf_mirror ,
538540 .payload = mirror_body ,
539- .response_storage = .{ . dynamic = & response_storage } ,
541+ .response_writer = & aw . writer ,
540542 }) catch return -4 ;
541543
542544 const status_code = @intFromEnum (fetch_result .status );
@@ -546,8 +548,9 @@ pub export fn gitlab_api_mcp_setup_mirror(
546548 return -3 ;
547549 }
548550
549- const bytes_read = @min (response_storage .items .len , cap );
550- @memcpy (out_buf [0.. bytes_read ], response_storage .items [0.. bytes_read ]);
551+ const response_bytes = aw .writer .buffered ();
552+ const bytes_read = @min (response_bytes .len , cap );
553+ @memcpy (out_buf [0.. bytes_read ], response_bytes [0.. bytes_read ]);
551554 out_len .* = @intCast (bytes_read );
552555 return 0 ;
553556}
0 commit comments