return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
int* r = data;
// If we get here, we set the status to zero
int cli_auth(void* data, int argc, char* argv[]) {
struct cli_global_args* global_args = data;
struct cli_local_args local_args = {};
- struct pakfire_client* client = NULL;
+ pakfire_client* client = NULL;
int status = 1;
int r;
}
// Called when an upload was successful
-static int upload_callback(struct pakfire_client* client,
+static int upload_callback(pakfire_client* client,
pakfire_client_upload_status status, const char* path, const char* uuid, void* data) {
struct cli_local_args* local_args = data;
int r;
return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
struct cli_local_args* local_args = data;
int r;
// Upload all packages
for (unsigned int i = 0; i < local_args->num_packages; i++) {
- r = pakfire_client_upload(client, local_args->packages[i], NULL,
+ r = pakfire_client_upload_create(client, local_args->packages[i], NULL,
upload_callback, local_args);
if (r < 0) {
fprintf(stderr, "Failed to create upload %s: %s\n",
char password[NAME_MAX];
};
-static int auth_callback(struct pakfire_client* client, void* data) {
+static int auth_callback(pakfire_client* client, void* data) {
const struct auth_credentials* creds = data;
// Authenticate!
return pakfire_client_auth_user(client, creds->password);
}
-int cli_setup_client(struct pakfire_client** client, struct cli_global_args* args) {
+int cli_setup_client(pakfire_client** client, struct cli_global_args* args) {
static struct auth_credentials creds = {};
struct pakfire_config* config = NULL;
const char* username = NULL;
}
int cli_run_client(struct cli_global_args* args, pakfire_client_ready_callback callback, void* data) {
- struct pakfire_client* client = NULL;
+ pakfire_client* client = NULL;
int r;
// Create a new client
int cli_setup_config(struct pakfire_config** config, struct cli_global_args* args);
int cli_setup_pakfire(struct pakfire** pakfire, struct cli_global_args* args);
int cli_setup_build(struct pakfire_build** build, struct cli_global_args* args, int flags);
-int cli_setup_client(struct pakfire_client** client, struct cli_global_args* args);
+int cli_setup_client(pakfire_client** client, struct cli_global_args* args);
int cli_run_client(struct cli_global_args* args, pakfire_client_ready_callback callback, void* data);
#endif /* PAKFIRE_CLI_PAKFIRE_H */
return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
const struct cli_local_args* local_args = data;
// Create the repository
return response->error;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
struct cli_local_args* local_args = data;
// Delete the repository
return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
const struct cli_local_args* local_args = data;
// XXX Needs a callback
return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
const struct cli_local_args* local_args = data;
// XXX Needs a callback
return 0;
}
-static int upload_callback(struct pakfire_client* client,
+static int upload_callback(pakfire_client* client,
pakfire_client_upload_status status, const char* path, const char* uuid, void* data) {
switch (status) {
case PAKFIRE_CLIENT_UPLOAD_SUCCESSFUL:
return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
const struct cli_local_args* local_args = data;
int r;
// Create all uploads
for (unsigned int i = 0; i < local_args->num_files; i++) {
- r = pakfire_client_upload(client, local_args->files[i], NULL, upload_callback, NULL);
+ r = pakfire_client_upload_create(client, local_args->files[i], NULL, upload_callback, NULL);
if (r < 0)
return r;
}
return 0;
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
const struct cli_local_args* local_args = data;
int r;
return cli_dump_json(response->data);
}
-static int ready_callback(struct pakfire_client* client, void* data) {
+static int ready_callback(pakfire_client* client, void* data) {
return pakfire_client_list_uploads(client, list_callback, data);
}
sd_event* loop;
// Client
- struct pakfire_client* client;
+ pakfire_client* client;
// Control Connection
struct pakfire_xfer* control;
}
int pakfire_builder_create(struct pakfire_builder** builder,
- pakfire_ctx* ctx, struct pakfire_client* client) {
+ pakfire_ctx* ctx, pakfire_client* client) {
struct pakfire_builder* self = NULL;
int r;
#include <pakfire/xfer.h>
int pakfire_builder_create(struct pakfire_builder** builder,
- pakfire_ctx* ctx, struct pakfire_client* client);
+ pakfire_ctx* ctx, pakfire_client* client);
struct pakfire_builder* pakfire_builder_ref(struct pakfire_builder* self);
struct pakfire_builder* pakfire_builder_unref(struct pakfire_builder* self);
#include <pakfire/util.h>
#include <pakfire/xfer.h>
-struct pakfire_client_upload {
+typedef struct pakfire_client_upload {
STAILQ_ENTRY(pakfire_client_upload) nodes;
// Client
- struct pakfire_client* client;
+ pakfire_client* client;
// UUID
char uuid[UUID_STR_LEN];
// Callback
pakfire_client_upload_callback callback;
void* data;
-};
+} pakfire_client_upload;
struct pakfire_client {
pakfire_ctx* ctx;
};
static int pakfire_client_xfer_create(struct pakfire_xfer** xfer,
- struct pakfire_client* self, const char* url, ...) __attribute__((format(printf, 3, 4)));
+ pakfire_client* self, const char* url, ...) __attribute__((format(printf, 3, 4)));
static int pakfire_client_xfer_create(struct pakfire_xfer** xfer,
- struct pakfire_client* self, const char* url, ...) {
+ pakfire_client* self, const char* url, ...) {
struct pakfire_xfer* x = NULL;
va_list args;
int r;
}
// Called when the client has been initialized for the first time
-static int pakfire_client_ready(struct pakfire_client* self) {
+static int pakfire_client_ready(pakfire_client* self) {
int r;
// Call the callback only once
static int pakfire_client_auth_response(struct pakfire_xfer* xfer,
const pakfire_xfer_response* response, void* data);
-static int pakfire_client_auth_required(struct pakfire_client* self);
+static int pakfire_client_auth_required(pakfire_client* self);
/*
Triggers a refresh of the access and refresh tokens
*/
-static int pakfire_client_auth_refresh(struct pakfire_client* self) {
+static int pakfire_client_auth_refresh(pakfire_client* self) {
struct pakfire_xfer* xfer = NULL;
struct json_object* request = NULL;
int r;
}
static int pakfire_client_refresh_timer(sd_event_source* event, uint64_t usec, void* data) {
- struct pakfire_client* self = data;
+ pakfire_client* self = data;
// Refresh the authentication tokens
return pakfire_client_auth_refresh(self);
}
-static int pakfire_client_set_access_token(struct pakfire_client* self, const char* token) {
+static int pakfire_client_set_access_token(pakfire_client* self, const char* token) {
time_t expires_at = -1;
int r;
return 0;
}
-static int pakfire_client_set_refresh_token(struct pakfire_client* self, const char* token) {
+static int pakfire_client_set_refresh_token(pakfire_client* self, const char* token) {
time_t expires_at = -1;
int r;
return 0;
}
-static int pakfire_client_store_read(struct pakfire_client* self) {
+static int pakfire_client_store_read(pakfire_client* self) {
struct json_object* store = NULL;
const char* refresh_token = NULL;
const char* access_token = NULL;
return r;
}
-static int pakfire_client_store_write(struct pakfire_client* self) {
+static int pakfire_client_store_write(pakfire_client* self) {
struct json_object* store = NULL;
char path[PATH_MAX];
int r;
return r;
}
-static int pakfire_client_xfer_auth(struct pakfire_client* self, struct pakfire_xfer* xfer) {
+static int pakfire_client_xfer_auth(pakfire_client* self, struct pakfire_xfer* xfer) {
int r;
// Fail if not authenticated
This function is being called when the client needs authentication and
does not have any credentials whatsoever.
*/
-static int pakfire_client_auth_required(struct pakfire_client* self) {
+static int pakfire_client_auth_required(pakfire_client* self) {
// Call the authentication callback
if (self->auth.callback)
return self->auth.callback(self, self->auth.data);
}
static int pakfire_client_init(sd_event_source* event, void* data) {
- struct pakfire_client* self = data;
+ pakfire_client* self = data;
DEBUG(self->ctx, "Initializing client...\n");
return pakfire_client_store_read(self);
}
-static void pakfire_client_upload_free(struct pakfire_client_upload* upload);
+static void pakfire_client_upload_free(pakfire_client_upload* upload);
-static void pakfire_client_free(struct pakfire_client* self) {
- struct pakfire_client_upload* upload = NULL;
+static void pakfire_client_free(pakfire_client* self) {
+ pakfire_client_upload* upload = NULL;
// Store any credentials
pakfire_client_store_write(self);
free(self);
}
-int pakfire_client_create(struct pakfire_client** client,
+int pakfire_client_create(pakfire_client** client,
pakfire_ctx* ctx, const char* url, const char* principal) {
- struct pakfire_client* self = NULL;
+ pakfire_client* self = NULL;
char hostname[HOST_NAME_MAX];
int r;
return r;
}
-struct pakfire_client* pakfire_client_ref(struct pakfire_client* self) {
+pakfire_client* pakfire_client_ref(pakfire_client* self) {
++self->nrefs;
return self;
}
-struct pakfire_client* pakfire_client_unref(struct pakfire_client* self) {
+pakfire_client* pakfire_client_unref(pakfire_client* self) {
if (--self->nrefs > 0)
return self;
return NULL;
}
-const char* pakfire_client_get_url(struct pakfire_client* self) {
+const char* pakfire_client_get_url(pakfire_client* self) {
return self->url;
}
// Run
-void pakfire_client_set_ready_callback(struct pakfire_client* self,
+void pakfire_client_set_ready_callback(pakfire_client* self,
pakfire_client_ready_callback callback, void* data) {
self->ready.callback = callback;
self->ready.data = data;
}
-int pakfire_client_run(struct pakfire_client* self) {
+int pakfire_client_run(pakfire_client* self) {
return pakfire_httpclient_run(self->httpclient, NULL);
}
// Authenticate
-int pakfire_client_set_auth_callback(struct pakfire_client* self,
+int pakfire_client_set_auth_callback(pakfire_client* self,
pakfire_client_auth_callback callback, void* data) {
self->auth.callback = callback;
self->auth.data = data;
static int pakfire_client_auth_response(struct pakfire_xfer* xfer,
const pakfire_xfer_response* response, void* data) {
- struct pakfire_client* self = data;
+ pakfire_client* self = data;
const char* refresh_token = NULL;
const char* access_token = NULL;
int r;
return pakfire_client_ready(self);
}
-int pakfire_client_auth_user(struct pakfire_client* self, const char* password) {
+int pakfire_client_auth_user(pakfire_client* self, const char* password) {
struct pakfire_xfer* xfer = NULL;
struct {
char* username;
}
#if 0
-int pakfire_client_auth_builder(struct pakfire_client* self,
+int pakfire_client_auth_builder(pakfire_client* self,
const char* username, const char* password) {
struct pakfire_xfer* xfer = NULL;
char hostname[HOST_NAME_MAX];
// Builder
-int pakfire_client_builder(struct pakfire_builder** builder, struct pakfire_client* self) {
+int pakfire_client_builder(struct pakfire_builder** builder, pakfire_client* self) {
struct pakfire_builder* b = NULL;
int r;
return r;
}
-int pakfire_client_builder_connect(struct pakfire_client* self, struct pakfire_builder* builder) {
+int pakfire_client_builder_connect(pakfire_client* self, struct pakfire_builder* builder) {
struct pakfire_xfer* xfer = NULL;
int r;
return r;
}
-int pakfire_client_builder_disconnected(struct pakfire_client* self, struct pakfire_xfer* xfer) {
+int pakfire_client_builder_disconnected(pakfire_client* self, struct pakfire_xfer* xfer) {
int r;
// Remove the connection from the client
// Build
-int pakfire_client_build(struct pakfire_client* self, const char* upload, const char* repo,
+int pakfire_client_build(pakfire_client* self, const char* upload, const char* repo,
const char** arches, int flags, pakfire_xfer_response_callback callback, void* data) {
struct pakfire_xfer* xfer = NULL;
struct json_object* request = NULL;
// Uploads
-static void pakfire_client_upload_free(struct pakfire_client_upload* upload) {
- struct pakfire_client* client = upload->client;
+static void pakfire_client_upload_free(pakfire_client_upload* upload) {
+ pakfire_client* client = upload->client;
// Remove the upload from the queue (if present)
if (client)
free(upload);
}
-static int pakfire_client_upload_create(struct pakfire_client_upload** upload,
- struct pakfire_client* client, const char* path, const char* filename,
+static int __pakfire_client_upload_create(pakfire_client_upload** upload,
+ pakfire_client* client, const char* path, const char* filename,
pakfire_client_upload_callback callback, void* data) {
- struct pakfire_client_upload* self = NULL;
+ pakfire_client_upload* self = NULL;
char basename[NAME_MAX];
int r;
static int pakfire_upload_payload_callback(struct pakfire_xfer* xfer,
const pakfire_xfer_response* response, void* data) {
pakfire_client_upload_status s = PAKFIRE_CLIENT_UPLOAD_SUCCESSFUL;
- struct pakfire_client_upload* upload = data;
+ pakfire_client_upload* upload = data;
int r = 0;
// Determine the status
return r;
}
-static int pakfire_client_upload_payload(struct pakfire_client_upload* upload) {
- struct pakfire_client* self = upload->client;
+static int pakfire_client_upload_payload(pakfire_client_upload* upload) {
+ pakfire_client* self = upload->client;
struct pakfire_xfer* xfer = NULL;
int r;
static int pakfire_client_upload_response(struct pakfire_xfer* xfer,
const pakfire_xfer_response* response, void* data) {
- struct pakfire_client_upload* self = data;
+ pakfire_client_upload* self = data;
const char* uuid = NULL;
int r;
return -EINVAL;
}
-int pakfire_client_upload(struct pakfire_client* self,
+int pakfire_client_upload_create(pakfire_client* self,
const char* path, const char* filename, pakfire_client_upload_callback callback, void* data) {
- struct pakfire_client_upload* upload = NULL;
+ pakfire_client_upload* upload = NULL;
struct json_object* request = NULL;
char* hexdigest_blake2b512 = NULL;
struct pakfire_xfer* xfer = NULL;
int r;
// Create a new upload
- r = pakfire_client_upload_create(&upload, self, path, filename, callback, data);
+ r = __pakfire_client_upload_create(&upload, self, path, filename, callback, data);
if (r < 0) {
ERROR(self->ctx, "Failed to create a new upload: %s\n", strerror(-r));
goto ERROR;
return r;
}
-int pakfire_client_list_uploads(struct pakfire_client* self,
+int pakfire_client_list_uploads(pakfire_client* self,
pakfire_client_list_uploads_callback callback, void* data) {
struct pakfire_xfer* xfer = NULL;
int r;
return r;
}
-int pakfire_client_delete_upload(struct pakfire_client* self, const char* uuid) {
+int pakfire_client_delete_upload(pakfire_client* self, const char* uuid) {
struct pakfire_xfer* xfer = NULL;
int r;
// Repositories
-int pakfire_client_list_repos(struct pakfire_client* self, const char* distro) {
+int pakfire_client_list_repos(pakfire_client* self, const char* distro) {
struct pakfire_xfer* xfer = NULL;
int r;
return r;
}
-int pakfire_client_get_repo(struct pakfire_client* self,
+int pakfire_client_get_repo(pakfire_client* self,
const char* distro, const char* name) {
struct pakfire_xfer* xfer = NULL;
int r;
return r;
}
-int pakfire_client_create_repo(struct pakfire_client* self,
+int pakfire_client_create_repo(pakfire_client* self,
const char* distro, const char* name, const char* description) {
struct pakfire_xfer* xfer = NULL;
struct json_object* request = NULL;
return r;
}
-int pakfire_client_delete_repo(struct pakfire_client* self, const char* distro,
+int pakfire_client_delete_repo(pakfire_client* self, const char* distro,
const char* name, pakfire_xfer_response_callback callback, void* data) {
struct pakfire_xfer* xfer = NULL;
int r;
/*
This is called when a job has finished.
*/
-int pakfire_client_job_finished(struct pakfire_client* self,
+int pakfire_client_job_finished(pakfire_client* self,
const char* job_id, const char* logfile, char** packages) {
struct json_object* request = NULL;
struct pakfire_xfer* xfer = NULL;
#ifndef PAKFIRE_CLIENT_H
#define PAKFIRE_CLIENT_H
-struct pakfire_client;
+typedef struct pakfire_client pakfire_client;
#include <json.h>
#include <pakfire/ctx.h>
#include <pakfire/xfer.h>
-int pakfire_client_create(struct pakfire_client** client,
+int pakfire_client_create(pakfire_client** client,
pakfire_ctx* ctx, const char* url, const char* principal);
-struct pakfire_client* pakfire_client_ref(struct pakfire_client* client);
-struct pakfire_client* pakfire_client_unref(struct pakfire_client* client);
+pakfire_client* pakfire_client_ref(pakfire_client* client);
+pakfire_client* pakfire_client_unref(pakfire_client* client);
-const char* pakfire_client_get_url(struct pakfire_client* client);
+const char* pakfire_client_get_url(pakfire_client* client);
// Run!
-typedef int (*pakfire_client_ready_callback)(struct pakfire_client* client, void* data);
+typedef int (*pakfire_client_ready_callback)(pakfire_client* client, void* data);
-void pakfire_client_set_ready_callback(struct pakfire_client* self,
+void pakfire_client_set_ready_callback(pakfire_client* self,
pakfire_client_ready_callback callback, void* data);
-int pakfire_client_run(struct pakfire_client* self);
+int pakfire_client_run(pakfire_client* self);
// Authentication
} pakfire_client_auth_status;
typedef int (*pakfire_client_auth_callback)
- (struct pakfire_client* client, void* data);
+ (pakfire_client* client, void* data);
-int pakfire_client_set_auth_callback(struct pakfire_client* client,
+int pakfire_client_set_auth_callback(pakfire_client* client,
pakfire_client_auth_callback callback, void* data);
-int pakfire_client_auth_user(struct pakfire_client* client, const char* password);
+int pakfire_client_auth_user(pakfire_client* client, const char* password);
// Builder
-int pakfire_client_builder(struct pakfire_builder** builder, struct pakfire_client* self);
+int pakfire_client_builder(struct pakfire_builder** builder, pakfire_client* self);
// Low-level functions
-int pakfire_client_builder_connect(struct pakfire_client* self, struct pakfire_builder* builder);
-int pakfire_client_builder_disconnected(struct pakfire_client* self, struct pakfire_xfer* xfer);
+int pakfire_client_builder_connect(pakfire_client* self, struct pakfire_builder* builder);
+int pakfire_client_builder_disconnected(pakfire_client* self, struct pakfire_xfer* xfer);
// Builds
PAKFIRE_CLIENT_DISABLE_TESTS = (1 << 0),
} pakfire_client_build_flags_t;
-int pakfire_client_build(struct pakfire_client* client, const char* upload, const char* repo,
+int pakfire_client_build(pakfire_client* client, const char* upload, const char* repo,
const char** arches, int flags, pakfire_xfer_response_callback callback, void* data);
// Uploads
} pakfire_client_upload_status;
typedef int (*pakfire_client_upload_callback)
- (struct pakfire_client* client, pakfire_client_upload_status status,
+ (pakfire_client* client, pakfire_client_upload_status status,
const char* path, const char* uuid, void* data);
-int pakfire_client_upload(struct pakfire_client* client,
+int pakfire_client_upload_create(pakfire_client* client,
const char* path, const char* filename, pakfire_client_upload_callback callback, void* data);
typedef pakfire_xfer_response_callback pakfire_client_list_uploads_callback;
-int pakfire_client_list_uploads(struct pakfire_client* client,
+int pakfire_client_list_uploads(pakfire_client* client,
pakfire_client_list_uploads_callback callback, void* data);
-int pakfire_client_delete_upload(struct pakfire_client* client, const char* uuid);
+int pakfire_client_delete_upload(pakfire_client* client, const char* uuid);
// Repositories
-int pakfire_client_list_repos(struct pakfire_client* client, const char* distro);
-int pakfire_client_get_repo(struct pakfire_client* client,
+int pakfire_client_list_repos(pakfire_client* client, const char* distro);
+int pakfire_client_get_repo(pakfire_client* client,
const char* distro, const char* name);
-int pakfire_client_create_repo(struct pakfire_client* client,
+int pakfire_client_create_repo(pakfire_client* client,
const char* distro, const char* name, const char* description);
-int pakfire_client_delete_repo(struct pakfire_client* client, const char* distro,
+int pakfire_client_delete_repo(pakfire_client* client, const char* distro,
const char* name, pakfire_xfer_response_callback callback, void* data);
// Jobs
-int pakfire_client_job_finished(struct pakfire_client* self,
+int pakfire_client_job_finished(pakfire_client* self,
const char* job_id, const char* logfile, char** packages);
#endif /* PAKFIRE_CLIENT_H */
int nrefs;
// Pakfire Client
- struct pakfire_client* client;
+ pakfire_client* client;
// Builder
struct pakfire_builder* builder;
/*
Called when the client is ready and we can start making connections...
*/
-static int pakfire_daemon_ready(struct pakfire_client* client, void* data) {
+static int pakfire_daemon_ready(pakfire_client* client, void* data) {
struct pakfire_daemon* self = data;
// Connect the control connection
struct pakfire_builder* builder;
// Client
- struct pakfire_client* client;
+ pakfire_client* client;
// Event Loop
sd_event* loop;
return pakfire_builder_job_finished(self->builder, self);
}
-static int pakfire_job_package_uploaded(struct pakfire_client* client,
+static int pakfire_job_package_uploaded(pakfire_client* client,
pakfire_client_upload_status status, const char* path, const char* uuid, void* data) {
struct pakfire_job* self = data;
int r;
continue;
// Upload the package
- r = pakfire_client_upload(self->client, entry->fts_path, entry->fts_name,
+ r = pakfire_client_upload_create(self->client, entry->fts_path, entry->fts_name,
pakfire_job_package_uploaded, self);
if (r < 0)
goto ERROR;
/*
Called when the log file has been uploaded...
*/
-static int pakfire_job_logfile_uploaded(struct pakfire_client* client,
+static int pakfire_job_logfile_uploaded(pakfire_client* client,
pakfire_client_upload_status status, const char* path, const char* uuid, void* data) {
struct pakfire_job* self = data;
}
// Upload the log file
- r = pakfire_client_upload(job->client, path, filename, pakfire_job_logfile_uploaded, job);
+ r = pakfire_client_upload_create(job->client, path, filename, pakfire_job_logfile_uploaded, job);
if (r < 0) {
ERROR(job->ctx, "Could not upload the log file: %s\n", strerror(-r));
goto ERROR;
}
int pakfire_job_create(struct pakfire_job** job, pakfire_ctx* ctx,
- struct pakfire_client* client, struct pakfire_builder* builder, json_object* data) {
+ pakfire_client* client, struct pakfire_builder* builder, json_object* data) {
struct pakfire_job* j = NULL;
char* p = NULL;
int r;
struct pakfire_job;
int pakfire_job_create(struct pakfire_job** worker, pakfire_ctx* ctx,
- struct pakfire_client* client, struct pakfire_builder* builder, json_object* data);
+ pakfire_client* client, struct pakfire_builder* builder, json_object* data);
struct pakfire_job* pakfire_job_ref(struct pakfire_job* worker);
struct pakfire_job* pakfire_job_unref(struct pakfire_job* worker);