diff options
author | Christian Segundo | 2023-06-12 00:12:43 +0200 |
---|---|---|
committer | Christian Segundo | 2023-06-12 00:12:43 +0200 |
commit | 6eaf6a8f3f3880372bdfa0027805213d109a80cc (patch) | |
tree | ff57b20febf3513d7f7b6bcb50924843753ca9c6 | |
parent | 3bd3f432a95da405634cdbd2a662d79a3a5ba7af (diff) | |
download | zmission-6eaf6a8f3f3880372bdfa0027805213d109a80cc.tar.gz |
allow getting all fields
-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, }, }, }; |