From: Michael Tremer Date: Fri, 27 Jun 2025 09:05:55 +0000 (+0000) Subject: client: Add a callback when deleting repositories X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=06142d7a6c05627406fbb492d104ab110a0dcdda;p=pakfire.git client: Add a callback when deleting repositories Signed-off-by: Michael Tremer --- diff --git a/src/cli/lib/repo_delete.c b/src/cli/lib/repo_delete.c index c8a93dec..9724aaa7 100644 --- a/src/cli/lib/repo_delete.c +++ b/src/cli/lib/repo_delete.c @@ -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[]) { diff --git a/src/pakfire/client.c b/src/pakfire/client.c index 3ac3dda4..b75ea735 100644 --- a/src/pakfire/client.c +++ b/src/pakfire/client.c @@ -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); diff --git a/src/pakfire/client.h b/src/pakfire/client.h index 3e6bb549..0aac5871 100644 --- a/src/pakfire/client.h +++ b/src/pakfire/client.h @@ -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