]> git.ipfire.org Git - pakfire.git/commitdiff
client: Create a callback for when deleting uploads
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 1 Jul 2025 10:46:41 +0000 (10:46 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 1 Jul 2025 10:46:41 +0000 (10:46 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/cli/lib/upload_delete.c
src/pakfire/client.c
src/pakfire/client.h

index 627bc645f2b40d05a76aa1dacdcdd0529e7bd32c..cb92bd38e295144d27e710089d5656990dcad497 100644 (file)
@@ -23,6 +23,7 @@
 #include <pakfire/client.h>
 #include <pakfire/util.h>
 
+#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;
        }
index 899d82b04bdd838db2cb23005c17cd38b548e2af..3bfacbd872e457097a39d0489ca11675402f7861 100644 (file)
@@ -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)
index 1f508d5a7632f361f732dd9ae5768a5e460509fd..cb523421a387f3c2f881e0f348f99d9327a10b53 100644 (file)
@@ -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