]> git.ipfire.org Git - pakfire.git/commitdiff
client: Implement deleting uploads
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Jun 2025 08:07:09 +0000 (08:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Jun 2025 08:07:09 +0000 (08:07 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/cli/lib/upload_delete.c
src/pakfire/client.c

index de49231b15736ca6c3af02e6207d6dde40c07ed3..540786bda264546e6fe8c06779ab79ba2d1be8a2 100644 (file)
@@ -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)
index c266106ad4d897feecf447ba46d045137ec11812..715a6bd538f10790ad10d5a9bff906ae390f3f9a 100644 (file)
@@ -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;
 }