diff libgaim/util.h @ 14354:01daacf7b771

[gaim-migrate @ 17060] Make gaim_url_fetch() cancelable and change Yahoo! to take advantage of the changes. Other stuff can be changed later, the important thing is that the API is there. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 27 Aug 2006 21:13:30 +0000
parents 60b1bc8dbf37
children e0a93e6fa98b
line wrap: on
line diff
--- a/libgaim/util.h	Sun Aug 27 19:47:41 2006 +0000
+++ b/libgaim/util.h	Sun Aug 27 21:13:30 2006 +0000
@@ -37,6 +37,8 @@
 extern "C" {
 #endif
 
+typedef struct _GaimUtilFetchUrlData GaimUtilFetchUrlData;
+
 typedef struct _GaimMenuAction
 {
 	char *label;
@@ -823,7 +825,22 @@
 gboolean gaim_url_parse(const char *url, char **ret_host, int *ret_port,
 						char **ret_path, char **ret_user, char **ret_passwd);
 
-typedef void (*GaimURLFetchCallback) (gpointer data, const char *buf, gsize len);
+/**
+ * This is the signature used for functions that act as the callback
+ * to gaim_util_fetch_url() or gaim_util_fetch_url_request().
+ *
+ * @param url_data      The same value that was returned when you called
+ *                      gaim_fetch_url() or gaim_fetch_url_request().
+ * @param user_data     The user data that your code passed into either
+ *                      gaim_util_fetch_url() or gaim_util_fetch_url_request().
+ * @param url_text      This will be NULL on error.  Otherwise this
+ *                      will contain the contents of the URL.
+ * @param len           0 on error, otherwise this is the length of buf.
+ * @param error_message If something went wrong then this will contain
+ *                      a descriptive error message, and buf will be
+ *                      NULL and len will be 0.
+ */
+typedef void (*GaimUtilFetchUrlCallback)(GaimUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
 
 /**
  * Fetches the data from a URL, and passes it to a callback function.
@@ -836,8 +853,8 @@
  * @param cb         The callback function.
  * @param data       The user data to pass to the callback function.
  */
-#define gaim_url_fetch(url, full, user_agent, http11, cb, data) \
-	gaim_url_fetch_request(url, full, user_agent, http11, NULL, \
+#define gaim_util_fetch_url(url, full, user_agent, http11, cb, data) \
+	gaim_util_fetch_url_request(url, full, user_agent, http11, NULL, \
 		FALSE, cb, data);
 
 /**
@@ -850,15 +867,23 @@
  * @param http11     TRUE if HTTP/1.1 should be used to download the file.
  * @param request    A HTTP request to send to the server instead of the
  *                   standard GET
- * @param include_headers if TRUE, include the HTTP headers in the
- *                   response
- * @param cb         The callback function.
+ * @param include_headers
+ *                   If TRUE, include the HTTP headers in the response.
+ * @param callback   The callback function.
  * @param data       The user data to pass to the callback function.
  */
-void gaim_url_fetch_request(const char *url, gboolean full,
-		const char *user_agent, gboolean http11,
-		const char *request, gboolean include_headers,
-		GaimURLFetchCallback cb, void *data);
+GaimUtilFetchUrlData *gaim_util_fetch_url_request(const gchar *url,
+		gboolean full, const gchar *user_agent, gboolean http11,
+		const gchar *request, gboolean include_headers,
+		GaimUtilFetchUrlCallback callback, gpointer data);
+
+/**
+ * Cancel a pending URL request started with either
+ * gaim_util_fetch_url_request() or gaim_util_fetch_url().
+ *
+ * @param url_data The data returned when you initiated the URL fetch.
+ */
+void gaim_util_fetch_url_cancel(GaimUtilFetchUrlData *url_data);
 
 /**
  * Decodes a URL into a plain string.