return 0;
}
+static int ready_callback(struct pakfire_client* client, void* data) {
+ const struct cli_local_args* local_args = data;
+
+ // XXX Needs a callback
+
+ // List repos
+ return pakfire_client_get_repo(client, local_args->distro, local_args->name);
+}
+
int cli_repo_show(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
r = cli_parse(NULL, NULL, NULL, doc, parse, 0, argc, argv, &local_args);
if (r)
- goto ERROR;
-
- // Connect to the build service
- r = cli_setup_client(&client, global_args);
- if (r < 0)
- goto ERROR;
-
- // List repos
- r = pakfire_client_get_repo(client, local_args.distro, local_args.name, &repo);
- if (r)
- goto ERROR;
-
- // Dump everything
- r = cli_dump_json(repo);
- if (r)
- goto ERROR;
-
-ERROR:
- if (client)
- pakfire_client_unref(client);
- if (repo)
- json_object_put(repo);
+ return r;
- return r;
+ // Run the client
+ return cli_run_client(global_args, ready_callback, &local_args);
}
}
int pakfire_client_get_repo(struct pakfire_client* self,
- const char* distro, const char* name, struct json_object** p) {
+ const char* distro, const char* name) {
struct pakfire_xfer* xfer = 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/%s", distro, name);
- if (r)
+ if (r < 0)
goto ERROR;
// Enable authentication
r = pakfire_client_xfer_auth(self, xfer);
- if (r)
+ if (r < 0)
goto ERROR;
- // Send the request
- r = pakfire_xfer_run_api_request(xfer, NULL, &response);
- if (r)
- goto ERROR;
+ // XXX This needs a callback
- // Return the pointer
- *p = json_object_get(response);
+ // Enqueue the transfer
+ r = pakfire_httpclient_enqueue(self->httpclient, xfer);
+ if (r < 0)
+ goto ERROR;
ERROR:
if (xfer)
pakfire_xfer_unref(xfer);
- if (response)
- json_object_put(response);
return r;
}
int pakfire_client_list_repos(struct pakfire_client* client,
const char* distro, struct json_object** repos);
int pakfire_client_get_repo(struct pakfire_client* client,
- const char* distro, const char* name, struct json_object** repo);
+ const char* distro, const char* name);
int pakfire_client_create_repo(struct pakfire_client* client,
const char* distro, const char* name, const char* description);
int pakfire_client_delete_repo(struct pakfire_client* client,