From 831740fcacfe67b8124436460afa77af15493f93 Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Thu, 15 Jun 2023 23:27:24 +0200 Subject: one step closer --- src/main.zig | 37 +++++++++++++++++++++++++++---------- src/request.zig | 4 +--- 2 files changed, 28 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main.zig b/src/main.zig index bdffa31..a52079a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -76,16 +76,33 @@ export fn c_session_get(client: ?*anyopaque, buf: [*]u8) c_int { return 0; } -//test "c api" { -//const clientOptions = transmission.ClientOptions{ -//.host = "192.168.0.2", -//.port = 9091, -//.https = false, -//}; -//var foo = c_client_init(clientOptions); -//_ = c_session_get(foo, undefined); -//c_client_deinit(foo); -//} +export fn c_torrent_get(client: ?*anyopaque) c_int { + var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( + @alignOf(transmission.Client), + client.?, + )); + + const body = transmission.torrent_get_raw(real_client, null) catch |err| { + std.debug.print("error: {any}\n", .{err}); + unreachable; + }; + defer allocator.free(body); + + std.debug.print("body: {s}\n", .{body}); + return 0; +} + +test "c api" { + const clientOptions = transmission.ClientOptions{ + .host = "192.168.0.2", + .port = 9091, + .https = false, + }; + var foo = c_client_init(clientOptions); + _ = c_session_get(foo, undefined); + _ = c_torrent_get(foo, undefined); + c_client_deinit(foo); +} test "basic add functionality" { try testing.expect(add(3, 7) == 10); diff --git a/src/request.zig b/src/request.zig index 2633428..478999b 100644 --- a/src/request.zig +++ b/src/request.zig @@ -57,9 +57,7 @@ pub const TorrentIDs = union(enum) { many: []const usize, recently_active, - const Self = @This(); - - pub fn jsonStringify(self: Self, options: std.json.StringifyOptions, out_stream: anytype) !void { + pub fn jsonStringify(self: TorrentIDs, options: std.json.StringifyOptions, out_stream: anytype) !void { switch (self) { .single => |v| try std.json.stringify(v, options, out_stream), .many => |v| try std.json.stringify(v, options, out_stream), -- cgit v1.2.3