// POST MIME Object
curl_mime* mime;
+ // POST Payload
+ char* payload;
+
// Xfer direction
enum {
PAKFIRE_XFER_DOWNLOAD = 0,
if (xfer->queries)
pakfire_strings_free(xfer->queries);
+ // POST Payload
+ if (xfer->payload)
+ free(xfer->payload);
+
// cURL stuff
if (xfer->handle)
curl_easy_cleanup(xfer->handle);
return r;
}
+int pakfire_xfer_set_payload(struct pakfire_xfer* self, const char* payload) {
+ if (self->payload) {
+ free(self->payload);
+ self->payload = NULL;
+ }
+
+ // Store the new payload
+ self->payload = strdup(payload);
+
+ return 0;
+}
+
static void pakfire_xfer_reset_output(struct pakfire_xfer* xfer) {
if (xfer->fin) {
fclose(xfer->fin);
}
}
+ // Add any payload
+ if (xfer->payload) {
+ r = curl_easy_setopt(xfer->handle, CURLOPT_POSTFIELDS, xfer->payload);
+ if (r) {
+ ERROR(xfer->ctx, "Could not set POST payload: %s\n", curl_easy_strerror(r));
+ return r;
+ }
+ }
+
// Authentication
if (xfer->auth) {
// Request SPNEGO
int pakfire_xfer_add_param(struct pakfire_xfer* xfer,
const char* key, const char* format, ...) __attribute__((format(printf, 3, 4)));
+int pakfire_xfer_set_payload(struct pakfire_xfer* self, const char* payload);
+
// Output
int pakfire_xfer_set_output(struct pakfire_xfer* xfer, FILE* f);
int pakfire_xfer_set_output_buffer(struct pakfire_xfer* xfer, char** buffer, size_t* length);