diff options
-rw-r--r-- | src/main.zig | 4 | ||||
-rw-r--r-- | src/transmission.zig | 14 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/main.zig b/src/main.zig index 1b796a3..27f4ed2 100644 --- a/src/main.zig +++ b/src/main.zig @@ -14,7 +14,7 @@ export fn add(a: i32, b: i32) i32 { var client = transmission.Client.init(allocator, clientOptions); defer client.deinit(); - const body = transmission.sessionGet(&client) catch |err| { + const body = transmission.session_get_raw(&client, null) catch |err| { std.debug.print("error: {any}\n", .{err}); unreachable; }; @@ -46,7 +46,7 @@ export fn c_session_get(client: ?*anyopaque, buf: [*]u8) c_int { client.?, )); - const body = transmission.sessionGet(real_client) catch |err| { + const body = transmission.session_get_raw(real_client, null) catch |err| { std.debug.print("error: {any}\n", .{err}); unreachable; }; diff --git a/src/transmission.zig b/src/transmission.zig index fec1b12..93fe7f4 100644 --- a/src/transmission.zig +++ b/src/transmission.zig @@ -92,12 +92,22 @@ pub const Client = struct { } }; -pub fn sessionGet(client: *Client) ![]u8 { +pub fn session_get_raw(client: *Client, fields: ?[]SessionGetFields) ![]u8 { + const all_fields = comptime blk: { + var all_fields: []const SessionGetFields = &[_]SessionGetFields{}; + inline for (@typeInfo(SessionGetFields).Enum.fields) |enumField| { + all_fields = all_fields ++ &[_]SessionGetFields{ + @field(SessionGetFields, enumField.name), + }; + } + break :blk all_fields; + }; + const r = Request{ .method = .session_get, .arguments = .{ .session_get = .{ - .fields = &[_]SessionGetFields{ .version, .utp_enabled }, + .fields = fields orelse all_fields, }, }, }; |