// Output Buffer
td_buffer* buffer;
+
+ // Callbacks
+ struct {
+ // On success
+ td_request_success_callback on_success;
+ void* on_success_data;
+
+ // On failure
+ td_request_failure_callback on_failure;
+ void* on_failure_data;
+ } callbacks;
};
static int td_request_debug_callback(CURL *handle, curl_infotype type,
return 0;
}
+void td_request_on_success(td_request* self,
+ td_request_success_callback callback, void* data) {
+ self->callbacks.on_success = callback;
+ self->callbacks.on_success_data = data;
+}
+
+void td_request_on_failure(td_request* self,
+ td_request_failure_callback callback, void* data) {
+ self->callbacks.on_failure = callback;
+ self->callbacks.on_failure_data = data;
+}
+
CURL* td_request_handle(td_request* self) {
return self->handle;
}
#include "client.h"
#include "ctx.h"
+#include "file.h"
int td_request_create(td_request** request, td_ctx* ctx, td_client* client);
char* td_request_get_url(td_request* self);
int td_request_set_url(td_request* self, const char* url);
+typedef int (*td_request_success_callback)
+ (td_ctx* ctx, td_file* file, void* data);
+typedef int (*td_request_failure_callback)
+ (td_ctx* ctx, int rc, td_file* file, void* data);
+
+// Called if the request has exited successfully
+void td_request_on_success(td_request* self,
+ td_request_success_callback callback, void* data);
+
+// Called if the request has failed
+void td_request_on_failure(td_request* self,
+ td_request_failure_callback callback, void* data);
+
CURL* td_request_handle(td_request* self);
int td_request_launch(td_request* self);