From a00ed3a1663fd69a599d17b90f01dea821a04171 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 21 Jun 2025 17:07:14 +0000 Subject: [PATCH] xfer: Accept a JSON request object to send as payload for API requests Signed-off-by: Michael Tremer --- src/pakfire/buildservice.c | 25 ++++++++++--------------- src/pakfire/job.c | 4 ++-- src/pakfire/xfer.c | 9 ++++++++- src/pakfire/xfer.h | 2 +- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/pakfire/buildservice.c b/src/pakfire/buildservice.c index 9f66108c..03896dfd 100644 --- a/src/pakfire/buildservice.c +++ b/src/pakfire/buildservice.c @@ -319,7 +319,7 @@ int pakfire_buildservice_auth_user(struct pakfire_buildservice* self, goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, NULL, &response); if (r) goto ERROR; @@ -408,7 +408,7 @@ int pakfire_buildservice_build(struct pakfire_buildservice* service, const char* } // Send the request - r = pakfire_xfer_run_api_request(xfer, NULL); + r = pakfire_xfer_run_api_request(xfer, NULL, NULL); if (r) goto ERROR; @@ -526,13 +526,8 @@ static int pakfire_buildservice_create_upload(struct pakfire_buildservice* servi if (r < 0) goto ERROR; - // Add the payload - r = pakfire_xfer_set_json_payload(xfer, request); - if (r < 0) - goto ERROR; - // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, request, &response); if (r < 0) goto ERROR; @@ -585,7 +580,7 @@ static int pakfire_buildservice_upload_payload(struct pakfire_buildservice* serv goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, NULL); + r = pakfire_xfer_run_api_request(xfer, NULL, NULL); if (r) goto ERROR; @@ -665,7 +660,7 @@ int pakfire_buildservice_list_uploads( goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, NULL, &response); if (r) goto ERROR; @@ -711,7 +706,7 @@ int pakfire_buildservice_delete_upload( goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, NULL, &response); if (r) goto ERROR; @@ -748,7 +743,7 @@ int pakfire_buildservice_list_repos(struct pakfire_buildservice* service, goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, NULL, &response); if (r) goto ERROR; @@ -792,7 +787,7 @@ int pakfire_buildservice_get_repo(struct pakfire_buildservice* service, goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, NULL, &response); if (r) goto ERROR; @@ -841,7 +836,7 @@ int pakfire_buildservice_create_repo(struct pakfire_buildservice* service, } // Send the request - r = pakfire_xfer_run_api_request(xfer, &response); + r = pakfire_xfer_run_api_request(xfer, NULL, &response); if (r) goto ERROR; @@ -879,7 +874,7 @@ int pakfire_buildservice_delete_repo(struct pakfire_buildservice* service, goto ERROR; // Send the request - r = pakfire_xfer_run_api_request(xfer, NULL); + r = pakfire_xfer_run_api_request(xfer, NULL, NULL); if (r) goto ERROR; diff --git a/src/pakfire/job.c b/src/pakfire/job.c index 120662a0..e5f98ff4 100644 --- a/src/pakfire/job.c +++ b/src/pakfire/job.c @@ -359,7 +359,7 @@ static int pakfire_job_finished(struct pakfire_job* job, int status) { } // Send the request - r = pakfire_xfer_run_api_request(xfer, NULL); + r = pakfire_xfer_run_api_request(xfer, NULL, NULL); if (r < 0) goto ERROR; @@ -411,7 +411,7 @@ static int pakfire_job_crashed(struct pakfire_job* job, const siginfo_t* si) { } // Send the request - r = pakfire_xfer_run_api_request(xfer, NULL); + r = pakfire_xfer_run_api_request(xfer, NULL, NULL); if (r < 0) goto ERROR; diff --git a/src/pakfire/xfer.c b/src/pakfire/xfer.c index ccd7ec87..82a0365b 100644 --- a/src/pakfire/xfer.c +++ b/src/pakfire/xfer.c @@ -1981,9 +1981,16 @@ ERROR: The response might optionally be returned if response is not NULL. */ pakfire_xfer_error_code_t pakfire_xfer_run_api_request( - struct pakfire_xfer* xfer, struct json_object** response) { + struct pakfire_xfer* xfer, struct json_object* request, struct json_object** response) { pakfire_xfer_error_code_t r; + // Set the request body + if (request) { + r = pakfire_xfer_set_json_payload(xfer, request); + if (r < 0) + return r; + } + // Loop indefinitely... for (;;) { r = pakfire_xfer_run_api_request_once(xfer, response); diff --git a/src/pakfire/xfer.h b/src/pakfire/xfer.h index aaf5e0b9..48e1b3eb 100644 --- a/src/pakfire/xfer.h +++ b/src/pakfire/xfer.h @@ -140,7 +140,7 @@ pakfire_xfer_error_code_t pakfire_xfer_done(struct pakfire_xfer* xfer, sd_event* pakfire_xfer_error_code_t pakfire_xfer_run(struct pakfire_xfer* xfer, int flags); pakfire_xfer_error_code_t pakfire_xfer_run_api_request( - struct pakfire_xfer* xfer, struct json_object** response); + struct pakfire_xfer* xfer, struct json_object* request, struct json_object** response); // WebSocket typedef int (*pakfire_xfer_open_callback)(struct pakfire_xfer* xfer, void* data); -- 2.47.3