]> git.ipfire.org Git - pakfire.git/commitdiff
httpclient: Allow to configure the progress flags
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Jun 2025 07:16:50 +0000 (07:16 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Jun 2025 07:16:50 +0000 (07:16 +0000)
This allows us to hide the progress bar when we are running API
requests.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/client.c
src/pakfire/httpclient.c
src/pakfire/httpclient.h
src/pakfire/transaction.c
tests/libpakfire/httpclient.c

index 05f352582080bfa544600eef4b15c3b48a68a773..1637a4683f7ab08202f87d27f5029bdc2505c61c 100644 (file)
@@ -494,7 +494,7 @@ int pakfire_client_create(struct pakfire_client** client,
                goto ERROR;
 
        // Create a new HTTP client
-       r = pakfire_httpclient_create(&self->httpclient, self->ctx);
+       r = pakfire_httpclient_create(&self->httpclient, self->ctx, PAKFIRE_PROGRESS_NO_PROGRESS);
        if (r < 0)
                goto ERROR;
 
index 1d4524fd3d1fa9a2cb44a43e31e94e84287298b6..0aac81c6e40abb67705247eeed1a108604c0a284 100644 (file)
@@ -646,14 +646,16 @@ static int pakfire_httpclient_setup_curl(struct pakfire_httpclient* self) {
        return 0;
 }
 
-static int pakfire_httpclient_setup_progress(struct pakfire_httpclient* self) {
+static int pakfire_httpclient_setup_progress(struct pakfire_httpclient* self, int flags) {
        int r;
 
-       const int flags =
-               PAKFIRE_PROGRESS_SHOW_PERCENTAGE |
-               PAKFIRE_PROGRESS_SHOW_ETA |
-               PAKFIRE_PROGRESS_SHOW_BYTES_TRANSFERRED |
-               PAKFIRE_PROGRESS_SHOW_TRANSFER_SPEED;
+       // Use some sensible defaults
+       if (!flags)
+               flags =
+                       PAKFIRE_PROGRESS_SHOW_PERCENTAGE |
+                       PAKFIRE_PROGRESS_SHOW_ETA |
+                       PAKFIRE_PROGRESS_SHOW_BYTES_TRANSFERRED |
+                       PAKFIRE_PROGRESS_SHOW_TRANSFER_SPEED;
 
        // Create a new progress indicator
        r = pakfire_progress_create(&self->progress, self->ctx, flags, NULL);
@@ -694,7 +696,7 @@ static void pakfire_httpclient_free(struct pakfire_httpclient* self) {
 }
 
 int pakfire_httpclient_create(struct pakfire_httpclient** client,
-               struct pakfire_ctx* ctx) {
+               struct pakfire_ctx* ctx, int progress_flags) {
        struct pakfire_httpclient* self = NULL;
        int r;
 
@@ -726,7 +728,7 @@ int pakfire_httpclient_create(struct pakfire_httpclient** client,
                goto ERROR;
 
        // Setup progress
-       r = pakfire_httpclient_setup_progress(self);
+       r = pakfire_httpclient_setup_progress(self, progress_flags);
        if (r)
                goto ERROR;
 
index 18d4ba744ecb6a126811abeb71cbd919a9612654..8031834bc5482d43a39910d8b404a8da60d286d2 100644 (file)
@@ -26,7 +26,8 @@ struct pakfire_httpclient;
 #include <pakfire/ctx.h>
 #include <pakfire/xfer.h>
 
-int pakfire_httpclient_create(struct pakfire_httpclient** client, struct pakfire_ctx* ctx);
+int pakfire_httpclient_create(struct pakfire_httpclient** client,
+               struct pakfire_ctx* ctx, int progress_flags);
 
 struct pakfire_httpclient* pakfire_httpclient_ref(struct pakfire_httpclient* self);
 struct pakfire_httpclient* pakfire_httpclient_unref(struct pakfire_httpclient* self);
index 4af176049bf01baccdcaf18b254aea7e6ec36243..70d259b30fb9e5878dc9c82db72159709aeb7820 100644 (file)
@@ -1999,7 +1999,7 @@ int pakfire_transaction_download(struct pakfire_transaction* transaction) {
        int r;
 
        // Initialize the HTTP client
-       r = pakfire_httpclient_create(&httpclient, transaction->ctx);
+       r = pakfire_httpclient_create(&httpclient, transaction->ctx, 0);
        if (r) {
                ERROR(transaction->ctx, "Could not initialize HTTP client: %m\n");
                return 1;
index 7ba9d0cea9659f7b63a1c58af0b65bf256b400c1..a89cfd0b6697552584b68fc31b0014f4f9d9f6b0 100644 (file)
@@ -31,7 +31,7 @@ static int test_create(const struct test* t) {
        int r = EXIT_FAILURE;
 
        // Create a HTTP client
-       ASSERT_SUCCESS(pakfire_httpclient_create(&client, t->ctx));
+       ASSERT_SUCCESS(pakfire_httpclient_create(&client, t->ctx, 0));
 
        // Everything passed
        r = EXIT_SUCCESS;