return 0;
}
+static int ready_callback(struct pakfire_client* client, void* data) {
+ const struct cli_local_args* local_args = data;
+
+ // Create the repository
+ return pakfire_client_create_repo(client,
+ local_args->distro, local_args->name, local_args->description);
+}
+
int cli_repo_create(void* data, int argc, char* argv[]) {
struct cli_global_args* global_args = data;
struct cli_local_args local_args = {};
struct pakfire_client* client = NULL;
- struct json_object* repo = NULL;
int r;
// Parse the command line
if (r < 0)
goto ERROR;
- // List repos
- r = pakfire_client_create_repo(client, local_args.distro, local_args.name,
- local_args.description, &repo);
- if (r)
- goto ERROR;
+ // Set ready callback
+ pakfire_client_set_ready_callback(client, ready_callback, &local_args);
- // Dump everything
- r = cli_dump_json(repo);
- if (r)
- goto ERROR;
+ // Run the client
+ r = pakfire_client_run(client);
ERROR:
if (client)
pakfire_client_unref(client);
- if (repo)
- json_object_put(repo);
return r;
}
}
int pakfire_client_create_repo(struct pakfire_client* self,
- const char* distro, const char* name, const char* description, struct json_object** p) {
+ const char* distro, const char* name, const char* description) {
struct pakfire_xfer* xfer = NULL;
struct json_object* request = NULL;
- struct json_object* response = NULL;
int r;
// Check inputs
// Create a new xfer
r = pakfire_client_xfer_create(&xfer, self, "/api/v1/repos/%s", distro);
- if (r)
+ if (r < 0)
goto ERROR;
// Enable authentication
r = pakfire_client_xfer_auth(self, xfer);
- if (r)
+ if (r < 0)
goto ERROR;
// Create the request
// Set name
r = pakfire_json_add_string(request, "name", name);
- if (r)
+ if (r < 0)
goto ERROR;
// Set description
if (description) {
r = pakfire_json_add_string(request, "description", description);
- if (r)
+ if (r < 0)
goto ERROR;
}
- // Send the request
- r = pakfire_xfer_run_api_request(xfer, request, &response);
- if (r)
+ // Set the request body
+ r = pakfire_xfer_set_json_payload(xfer, request);
+ if (r < 0)
goto ERROR;
- // Return the pointer
- if (p)
- *p = json_object_get(response);
+ // XXX This needs a callback
+
+ // Enqueue the transfer
+ r = pakfire_httpclient_enqueue(self->httpclient, xfer);
+ if (r < 0)
+ goto ERROR;
ERROR:
if (xfer)
pakfire_xfer_unref(xfer);
if (request)
json_object_put(request);
- if (response)
- json_object_put(response);
return r;
}
int pakfire_client_get_repo(struct pakfire_client* client,
const char* distro, const char* name, struct json_object** repo);
int pakfire_client_create_repo(struct pakfire_client* client,
- const char* distro, const char* name, const char* description, struct json_object** repo);
+ const char* distro, const char* name, const char* description);
int pakfire_client_delete_repo(struct pakfire_client* client,
const char* distro, const char* name);