@@ -20,7 +20,7 @@ fn authUrl(self: @This(), url_path: []const u8) !std.Uri {
2020 };
2121}
2222
23- fn fetchSchema (self : @This (), response_storage : * std .ArrayList ( u8 ) , subject : []const u8 , schema : []const u8 ) ! void {
23+ fn fetchSchema (self : @This (), response_storage : * std .Io . Writer , subject : []const u8 , schema : []const u8 ) ! void {
2424 const Schema = struct { schema : []const u8 };
2525 var client = std.http.Client { .allocator = self .allocator };
2626 defer client .deinit ();
@@ -29,34 +29,41 @@ fn fetchSchema(self: @This(), response_storage: *std.ArrayList(u8), subject: []c
2929 const auth_url = try self .authUrl (url_path );
3030 const shb = try self .allocator .alloc (u8 , 1024 );
3131 defer self .allocator .free (shb );
32- var schema_json = std .ArrayList ( u8 ) .init (self .allocator );
32+ var schema_json : std.Io.Writer.Allocating = .init (self .allocator );
3333 defer schema_json .deinit ();
34- try std .json .stringify (Schema { .schema = schema }, .{}, schema_json .writer ());
34+ var json_writer : std.json.Stringify = .{ .writer = & schema_json .writer };
35+
36+ try json_writer .write (Schema { .schema = schema });
37+
3538 const result = client .fetch (.{
36- .response_storage = .{ .dynamic = response_storage },
37- .server_header_buffer = shb ,
39+ .response_writer = response_storage ,
3840 .method = std .http .Method .POST ,
3941 .location = .{ .uri = auth_url },
40- .payload = schema_json .items ,
42+ .payload = schema_json .written () ,
4143 }) catch | err | {
4244 std .log .err ("error reaching {s} on {} port {}: {}" , .{ url_path , auth_url .host .? , auth_url .port .? , err });
4345 return errors .SchemaError .RegistryUnreachable ;
4446 };
4547 if (result .status != std .http .Status .ok ) {
46- std .log .err ("response {} not 200 OK on {s} getting schema at {s}: {s}" , .{ result .status , subject , url_path , response_storage .items });
48+ std .log .err ("response {} not 200 OK on {s} getting schema at {s}: {s}" , .{
49+ result .status ,
50+ subject ,
51+ url_path ,
52+ response_storage .buffer [0.. response_storage .end ],
53+ });
4754 return errors .SchemaError .RegistryAngry ;
4855 }
4956}
5057
5158pub fn findSchemaId (self : @This (), topic : []const u8 , schema : []const u8 ) ! u32 {
5259 const SchemaVersionResponse = struct { id : u32 };
53- var response_storage = std .ArrayList ( u8 ) .init (self .allocator );
54- try self .fetchSchema (& response_storage , topic , schema );
60+ var response_storage : std.Io.Writer.Allocating = .init (self .allocator );
61+ try self .fetchSchema (& response_storage . writer , topic , schema );
5562 errdefer response_storage .deinit ();
5663 const parsed = try std .json .parseFromSlice (
5764 SchemaVersionResponse ,
5865 self .allocator ,
59- response_storage .items ,
66+ response_storage .written () ,
6067 .{ .ignore_unknown_fields = true },
6168 );
6269 defer parsed .deinit ();
0 commit comments