From: Michael Tremer Date: Tue, 24 Jun 2025 15:01:15 +0000 (+0000) Subject: client: Add an authentication callback X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6ebbfa2950603d7f789fd144b3c4c6ee8ca40c7f;p=pakfire.git client: Add an authentication callback Signed-off-by: Michael Tremer --- 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);