From 6ebbfa2950603d7f789fd144b3c4c6ee8ca40c7f Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Tue, 24 Jun 2025 15:01:15 +0000 Subject: [PATCH] client: Add an authentication callback Signed-off-by: Michael Tremer --- src/pakfire/client.c | 14 ++++++++++++++ src/pakfire/client.h | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/pakfire/client.c b/src/pakfire/client.c index 5068598d..0d83ef7e 100644 --- a/src/pakfire/client.c +++ b/src/pakfire/client.c @@ -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; diff --git a/src/pakfire/client.h b/src/pakfire/client.h index f4d0b520..19848e52 100644 --- a/src/pakfire/client.h +++ b/src/pakfire/client.h @@ -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); -- 2.47.2