From: Michael Tremer Date: Tue, 1 Jul 2025 10:46:41 +0000 (+0000) Subject: client: Create a callback for when deleting uploads X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9fde6ecbde695b3cefe5e7cbf22b91eadd62cba5;p=pakfire.git client: Create a callback for when deleting uploads Signed-off-by: Michael Tremer --- diff --git a/src/cli/lib/upload_delete.c b/src/cli/lib/upload_delete.c index 627bc645..cb92bd38 100644 --- a/src/cli/lib/upload_delete.c +++ b/src/cli/lib/upload_delete.c @@ -23,6 +23,7 @@ #include #include +#include "api.h" #include "command.h" #include "pakfire.h" #include "upload_delete.h" @@ -60,13 +61,30 @@ static error_t parse(int key, char* arg, struct argp_state* state, void* data) { return 0; } +static int delete_callback(pakfire_xfer* xfer, + const pakfire_xfer_response* response, void* data) { + const char* uuid = data; + int r; + + // Handle errors + r = cli_api_error(response, "Failed to delete the upload"); + if (r < 0) + return 0; + + // Show result + printf("Upload %s has been successfully deleted\n", uuid); + + return 0; +} + static int ready_callback(pakfire_client* client, void* data) { const struct cli_local_args* local_args = data; int r; // Delete all uploads for (unsigned int i = 0; i < local_args->num_uploads; i++) { - r = pakfire_client_delete_upload(client, local_args->uploads[i]); + r = pakfire_client_delete_upload(client, + local_args->uploads[i], delete_callback, (char*)local_args->uploads[i]); if (r < 0) return r; } diff --git a/src/pakfire/client.c b/src/pakfire/client.c index 899d82b0..3bfacbd8 100644 --- a/src/pakfire/client.c +++ b/src/pakfire/client.c @@ -1274,7 +1274,8 @@ ERROR: return r; } -int pakfire_client_delete_upload(pakfire_client* self, const char* uuid) { +int pakfire_client_delete_upload(pakfire_client* self, const char* uuid, + pakfire_xfer_response_callback callback, void* data) { pakfire_xfer* xfer = NULL; int r; @@ -1293,6 +1294,11 @@ int pakfire_client_delete_upload(pakfire_client* self, const char* uuid) { if (r < 0) goto ERROR; + // Register the callback + r = pakfire_xfer_set_response_callback(xfer, callback, data); + if (r < 0) + goto ERROR; + // Enqueue the transfer r = pakfire_httpclient_enqueue(self->httpclient, xfer); if (r < 0) diff --git a/src/pakfire/client.h b/src/pakfire/client.h index 1f508d5a..cb523421 100644 --- a/src/pakfire/client.h +++ b/src/pakfire/client.h @@ -91,8 +91,9 @@ int pakfire_client_upload_create(pakfire_client* client, typedef pakfire_xfer_response_callback pakfire_client_list_uploads_callback; int pakfire_client_list_uploads(pakfire_client* client, - pakfire_client_list_uploads_callback callback, void* data); -int pakfire_client_delete_upload(pakfire_client* client, const char* uuid); + pakfire_client_list_uploads_callback callback, void* data); +int pakfire_client_delete_upload(pakfire_client* self, const char* uuid, + pakfire_xfer_response_callback callback, void* data); // Repositories