]> git.ipfire.org Git - pakfire.git/commitdiff
client: Add a callback when deleting repositories
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Jun 2025 09:05:55 +0000 (09:05 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Jun 2025 09:05:55 +0000 (09:05 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/cli/lib/repo_delete.c
src/pakfire/client.c
src/pakfire/client.h

index c8a93dec337873b8cb256532375e54ace4b6daf3..9724aaa7cfc9a5434536648b576851db8e5aeae0 100644 (file)
@@ -60,12 +60,23 @@ static error_t parse(int key, char* arg, struct argp_state* state, void* data) {
        return 0;
 }
 
+static int response_callback(struct pakfire_xfer* xfer, pakfire_xfer_error_code_t code,
+               int status, struct json_object* response, void* data) {
+       switch (code) {
+               case PAKFIRE_XFER_OK:
+                       return cli_dump_json(response);
+
+               default:
+                       return code;
+       }
+}
+
 static int ready_callback(struct pakfire_client* client, void* data) {
-       const struct cli_local_args* local_args = data;
+       struct cli_local_args* local_args = data;
 
        // Delete the repository
        return pakfire_client_delete_repo(client,
-               local_args->distro, local_args->name);
+               local_args->distro, local_args->name, response_callback, local_args);
 }
 
 int cli_repo_delete(void* data, int argc, char* argv[]) {
index 3ac3dda4ba004ca9ed86eaf2293538918dc08cc2..b75ea7353bea45e33104a6c3e1cf9cc2eb196506 100644 (file)
@@ -1455,8 +1455,8 @@ ERROR:
        return r;
 }
 
-int pakfire_client_delete_repo(struct pakfire_client* self,
-               const char* distro, const char* name) {
+int pakfire_client_delete_repo(struct pakfire_client* self, const char* distro,
+               const char* name, pakfire_xfer_response_callback callback, void* data) {
        struct pakfire_xfer* xfer = NULL;
        int r;
 
@@ -1475,7 +1475,10 @@ int pakfire_client_delete_repo(struct pakfire_client* self,
        if (r < 0)
                goto ERROR;
 
-       // XXX This needs a callback
+       // Set 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);
index 3e6bb549830e992f7a662d39bed01cb0aec45575..0aac5871e634badc9f3e8f4852f815bb9d90c21c 100644 (file)
@@ -109,8 +109,8 @@ int pakfire_client_get_repo(struct pakfire_client* client,
        const char* distro, const char* name);
 int pakfire_client_create_repo(struct pakfire_client* client,
        const char* distro, const char* name, const char* description);
-int pakfire_client_delete_repo(struct pakfire_client* client,
-       const char* distro, const char* name);
+int pakfire_client_delete_repo(struct pakfire_client* client, const char* distro,
+       const char* name, pakfire_xfer_response_callback callback, void* data);
 
 // Jobs