const std = @import("std"); const testing = std.testing; pub const Request = @import("request.zig").Request; pub const Types = @import("types.zig"); test { testing.refAllDecls(@This()); } //var gpa = std.heap.GeneralPurposeAllocator(.{}){}; //const allocator = gpa.allocator(); //export fn add(a: i32, b: i32) i32 { //const clientOptions = transmission.ClientOptions{ //.host = "192.168.0.2", //.port = 9091, //.https = false, //}; //var client = transmission.Client.init(allocator, clientOptions); //defer client.deinit(); //{ //const body = transmission.session_get_raw(&client, null) catch |err| { //std.debug.print("error: {any}\n", .{err}); //unreachable; //}; //defer allocator.free(body); //std.debug.print("body: {s}\n", .{body}); //} //{ //const body = transmission.torrent_get_(&client, null) catch |err| { //std.debug.print("error: {any}\n", .{err}); //unreachable; //}; ////defer allocator.free(body); //for (body.arguments.torrent_get.torrents.?) |t| { //std.debug.print("name: {any}\n", .{t}); //} //} //{ //const body = transmission.torrent_get_(&client, null) catch |err| { //std.debug.print("error: {any}\n", .{err}); //unreachable; //}; ////defer allocator.free(body); //std.debug.print("body: {any}\n", .{body}); //} //{ //const body = transmission.session_set_raw(&client, .{ .peer_port = 51413 }) catch |err| { //std.debug.print("error: {any}\n", .{err}); //unreachable; //}; //defer allocator.free(body); //std.debug.print("body: {s}\n", .{body}); //} //return a + b; //} //export fn c_client_init(clientOptions: transmission.ClientOptions) ?*anyopaque { //var client = allocator.create(transmission.Client) catch unreachable; //client.* = transmission.Client.init(allocator, clientOptions); //return @ptrCast(*anyopaque, client); //} //export fn c_client_deinit(client: ?*anyopaque) void { //var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( //@alignOf(transmission.Client), //client.?, //)); //real_client.*.deinit(); //allocator.destroy(real_client); //} //export fn c_session_get(client: ?*anyopaque, buf: [*]u8) c_int { //var real_client: *transmission.Client = @ptrCast(*transmission.Client, @alignCast( //@alignOf(transmission.Client), //client.?, //)); //const body = transmission.session_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}); //_ = buf; //return 0; //} //export fn c_torrent_get(client: ?*anyopaque) [*:0]u8 { //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); //// TODO: use the same pointer of body but gotta go fast :( //var foo = std.ArrayList(u8).init(allocator); //foo.insertSlice(0, body) catch unreachable; ////std.debug.print("body: {s}\n", .{body}); //return foo.toOwnedSliceSentinel(0) catch unreachable; //} //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); //c_client_deinit(foo); //} //test "basic add functionality" { //try testing.expect(add(3, 7) == 10); //}