From: Michael Tremer Date: Fri, 27 Jun 2025 08:07:09 +0000 (+0000) Subject: client: Implement deleting uploads X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8ecb8f725a34465be1fb3250b1a44cdbea491350;p=pakfire.git client: Implement deleting uploads Signed-off-by: Michael Tremer --- diff --git a/src/cli/lib/upload_delete.c b/src/cli/lib/upload_delete.c index de49231b..540786bd 100644 --- a/src/cli/lib/upload_delete.c +++ b/src/cli/lib/upload_delete.c @@ -60,6 +60,20 @@ static error_t parse(int key, char* arg, struct argp_state* state, void* data) { return 0; } +static int ready_callback(struct 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]); + if (r < 0) + return r; + } + + return 0; +} + int cli_upload_delete(void* data, int argc, char* argv[]) { struct cli_global_args* global_args = data; struct cli_local_args local_args = {}; @@ -76,12 +90,11 @@ int cli_upload_delete(void* data, int argc, char* argv[]) { if (r < 0) goto ERROR; - // Delete uploads - for (unsigned int i = 0; i < local_args.num_uploads; i++) { - r = pakfire_client_delete_upload(client, local_args.uploads[i]); - if (r) - goto ERROR; - } + // Set ready callback + pakfire_client_set_ready_callback(client, ready_callback, &local_args); + + // Run the client + r = pakfire_client_run(client); ERROR: if (client) diff --git a/src/pakfire/client.c b/src/pakfire/client.c index c266106a..715a6bd5 100644 --- a/src/pakfire/client.c +++ b/src/pakfire/client.c @@ -1301,34 +1301,31 @@ ERROR: int pakfire_client_delete_upload(struct pakfire_client* self, const char* uuid) { struct pakfire_xfer* xfer = NULL; - struct json_object* response = NULL; int r; // Create a new xfer r = pakfire_client_xfer_create(&xfer, self, "/api/v1/uploads/%s", uuid); - if (r) + if (r < 0) goto ERROR; // Ask to DELETE r = pakfire_xfer_set_method(xfer, PAKFIRE_METHOD_DELETE); - if (r) + if (r < 0) goto ERROR; // Enable authentication r = pakfire_client_xfer_auth(self, xfer); - if (r) + if (r < 0) goto ERROR; - // Send the request - r = pakfire_xfer_run_api_request(xfer, NULL, &response); - if (r) + // Enqueue the transfer + r = pakfire_httpclient_enqueue(self->httpclient, xfer); + if (r < 0) goto ERROR; ERROR: if (xfer) pakfire_xfer_unref(xfer); - if (response) - json_object_put(response); return r; }