summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Segundo2023-06-12 00:12:43 +0200
committerChristian Segundo2023-06-12 00:12:43 +0200
commit6eaf6a8f3f3880372bdfa0027805213d109a80cc (patch)
treeff57b20febf3513d7f7b6bcb50924843753ca9c6
parent3bd3f432a95da405634cdbd2a662d79a3a5ba7af (diff)
downloadzmission-6eaf6a8f3f3880372bdfa0027805213d109a80cc.tar.gz
allow getting all fields
-rw-r--r--src/main.zig4
-rw-r--r--src/transmission.zig14
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,
},
},
};