]> git.ipfire.org Git - pakfire.git/commitdiff
client: Add an authentication callback
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 24 Jun 2025 15:01:15 +0000 (15:01 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 24 Jun 2025 15:01:15 +0000 (15:01 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/client.c
src/pakfire/client.h

index 5068598d7768cddb00f06771ebb5aea066ca34ea..0d83ef7e432c1f875299f19514329e4228a6252f 100644 (file)
@@ -55,6 +55,12 @@ struct pakfire_client {
        time_t access_token_expires_at;
        char refresh_token[1024];
        time_t refresh_token_expires_at;
+
+       // Callbacks
+       struct pakfire_client_auth_callback {
+               pakfire_client_auth_callback callback;
+               void* data;
+       } auth_callback;
 };
 
 static int pakfire_client_xfer_create(struct pakfire_xfer** xfer,
@@ -312,6 +318,14 @@ const char* pakfire_client_get_url(struct pakfire_client* self) {
 
 // Authenticate
 
+int pakfire_client_set_auth_callback(struct pakfire_client* self,
+               pakfire_client_auth_callback callback, void* data) {
+       self->auth_callback.callback = callback;
+       self->auth_callback.data     = data;
+
+       return 0;
+}
+
 int pakfire_client_auth_user(struct pakfire_client* self,
                const char* username, const char* password) {
        struct json_object* response = NULL;
index f4d0b5201da561e34a143d533ab9a76732c89d16..19848e52940edb20d2a1b98f8288eb2878fce0be 100644 (file)
@@ -38,6 +38,17 @@ const char* pakfire_client_get_url(struct pakfire_client* client);
 
 // Authentication
 
+typedef enum {
+       PAKFIRE_CLIENT_AUTH_SUCCESSFUL,
+       PAKFIRE_CLIENT_AUTH_ERROR,
+} pakfire_client_auth_status;
+
+typedef int (*pakfire_client_auth_callback)
+       (struct pakfire_client* client, pakfire_client_auth_status status, void* data);
+
+int pakfire_client_set_auth_callback(struct pakfire_client* client,
+       pakfire_client_auth_callback callback, void* data);
+
 int pakfire_client_auth_user(struct pakfire_client* client,
        const char* username, const char* password);