/pidgin/main: 6d016a081401: HTTP: migrate purple_util_fetch_url ...
Tomasz Wasilczyk
tomkiewicz at cpw.pidgin.im
Sun Jun 23 15:35:42 EDT 2013
Changeset: 6d016a0814016c5e6d07d16b91e1f3c6b08393bd
Author: Tomasz Wasilczyk <tomkiewicz at cpw.pidgin.im>
Date: 2013-06-23 21:35 +0200
Branch: default
URL: https://hg.pidgin.im/pidgin/main/rev/6d016a081401
Description:
HTTP: migrate purple_util_fetch_url to new API for prpls
diffstat:
libpurple/obsolete.c | 26 +++++--
libpurple/obsolete.h | 2 +
libpurple/protocols/jabber/jabber.c | 7 +-
libpurple/protocols/jabber/jabber.h | 4 +-
libpurple/protocols/jabber/useravatar.c | 43 ++++++-----
libpurple/protocols/msn/msn.c | 106 +++++++++++++----------------
libpurple/protocols/msn/session.c | 8 +-
libpurple/protocols/msn/session.h | 2 +-
libpurple/protocols/msn/slp.c | 36 ++++++---
libpurple/protocols/mxit/formcmds.c | 24 +++---
libpurple/protocols/mxit/markup.c | 28 +++----
libpurple/protocols/mxit/mxit.h | 1 +
libpurple/protocols/mxit/protocol.c | 4 +
libpurple/protocols/myspace/myspace.c | 98 ---------------------------
libpurple/protocols/myspace/myspace.h | 4 -
libpurple/protocols/myspace/user.c | 35 ++++-----
libpurple/protocols/myspace/user.h | 4 +-
libpurple/protocols/yahoo/libymsg.c | 39 +++++++---
libpurple/protocols/yahoo/libymsg.h | 6 +-
libpurple/protocols/yahoo/yahoo_picture.c | 41 +++++-----
libpurple/protocols/yahoo/yahoo_profile.c | 81 ++++++++++------------
21 files changed, 256 insertions(+), 343 deletions(-)
diffs (truncated from 1288 to 300 lines):
diff --git a/libpurple/obsolete.c b/libpurple/obsolete.c
--- a/libpurple/obsolete.c
+++ b/libpurple/obsolete.c
@@ -23,8 +23,11 @@
#include "internal.h"
#include "debug.h"
+#include "ntlm.h"
+
+#if 0
#include "http.h"
-#include "ntlm.h"
+#endif
struct _PurpleUtilFetchUrlData
{
@@ -65,17 +68,12 @@ struct _PurpleUtilFetchUrlData
gboolean chunked;
PurpleAccount *account;
+#if 0
PurpleHttpConnection *wrapped_request;
+#endif
gboolean cancelled;
};
-typedef struct
-{
- PurpleUtilFetchUrlData *url_data;
- PurpleUtilFetchUrlCallback cb;
- gpointer user_data;
-} PurpleUtilLegacyWrapData;
-
/**
* Parses a URL, returning its host, port, file path, username and password.
*
@@ -91,6 +89,14 @@ typedef struct
static gboolean purple_url_parse(const char *url, char **ret_host, int *ret_port,
char **ret_path, char **ret_user, char **ret_passwd);
+#if 0
+
+typedef struct
+{
+ PurpleUtilFetchUrlData *url_data;
+ PurpleUtilFetchUrlCallback cb;
+ gpointer user_data;
+} PurpleUtilLegacyWrapData;
static void purple_util_fetch_url_cb(PurpleHttpConnection *http_conn,
PurpleHttpResponse *response, gpointer _wrap_data)
@@ -144,6 +150,8 @@ PurpleUtilFetchUrlData * purple_util_fet
return url_data;
}
+#endif
+
/**
* The arguments to this function are similar to printf.
*/
@@ -761,11 +769,13 @@ purple_util_fetch_url_request(PurpleAcco
void
purple_util_fetch_url_cancel(PurpleUtilFetchUrlData *gfud)
{
+#if 0
if (gfud->wrapped_request != NULL) {
gfud->cancelled = TRUE;
purple_http_conn_cancel(gfud->wrapped_request);
return;
}
+#endif
if (gfud->ssl_connection != NULL)
purple_ssl_close(gfud->ssl_connection);
diff --git a/libpurple/obsolete.h b/libpurple/obsolete.h
--- a/libpurple/obsolete.h
+++ b/libpurple/obsolete.h
@@ -57,6 +57,7 @@ typedef struct _PurpleUtilFetchUrlData P
*/
typedef void (*PurpleUtilFetchUrlCallback)(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message);
+#if 0
/**
* Fetches the data from a URL, and passes it to a callback function.
*
@@ -72,6 +73,7 @@ typedef void (*PurpleUtilFetchUrlCallbac
PurpleUtilFetchUrlData * purple_util_fetch_url(const gchar *url, gboolean full,
const gchar *user_agent, gboolean http11, gssize max_len,
PurpleUtilFetchUrlCallback cb, gpointer data);
+#endif
/**
* Fetches the data from a URL, and passes it to a callback function.
diff --git a/libpurple/protocols/jabber/jabber.c b/libpurple/protocols/jabber/jabber.c
--- a/libpurple/protocols/jabber/jabber.c
+++ b/libpurple/protocols/jabber/jabber.c
@@ -31,6 +31,7 @@
#include "conversation.h"
#include "debug.h"
#include "dnssrv.h"
+#include "http.h"
#include "imgstore.h"
#include "message.h"
#include "notify.h"
@@ -1640,9 +1641,9 @@ void jabber_close(PurpleConnection *gc)
js->bs_proxies = g_list_delete_link(js->bs_proxies, js->bs_proxies);
}
- while(js->url_datas) {
- purple_util_fetch_url_cancel(js->url_datas->data);
- js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas);
+ while(js->http_conns) {
+ purple_http_conn_cancel(js->http_conns->data);
+ js->http_conns = g_slist_delete_link(js->http_conns, js->http_conns);
}
g_free(js->stream_id);
diff --git a/libpurple/protocols/jabber/jabber.h b/libpurple/protocols/jabber/jabber.h
--- a/libpurple/protocols/jabber/jabber.h
+++ b/libpurple/protocols/jabber/jabber.h
@@ -265,10 +265,10 @@ struct _JabberStream
PurpleBOSHConnection *bosh;
/**
- * This linked list contains PurpleUtilFetchUrlData structs
+ * This linked list contains PurpleHttpConnection structs
* for when we lookup buddy icons from a url
*/
- GSList *url_datas;
+ GSList *http_conns;
/* keep a hash table of JingleSessions */
GHashTable *sessions;
diff --git a/libpurple/protocols/jabber/useravatar.c b/libpurple/protocols/jabber/useravatar.c
--- a/libpurple/protocols/jabber/useravatar.c
+++ b/libpurple/protocols/jabber/useravatar.c
@@ -22,8 +22,8 @@
*/
#include "internal.h"
-#include "obsolete.h"
+#include "http.h"
#include "useravatar.h"
#include "pep.h"
#include "debug.h"
@@ -260,22 +260,24 @@ typedef struct _JabberBuddyAvatarUpdateU
} JabberBuddyAvatarUpdateURLInfo;
static void
-do_buddy_avatar_update_fromurl(PurpleUtilFetchUrlData *url_data,
- gpointer user_data, const gchar *url_text,
- gsize len, const gchar *error_message)
+do_buddy_avatar_update_fromurl(PurpleHttpConnection *http_conn,
+ PurpleHttpResponse *response, gpointer _info)
{
- JabberBuddyAvatarUpdateURLInfo *info = user_data;
+ JabberBuddyAvatarUpdateURLInfo *info = _info;
gpointer icon_data;
+ const gchar *got_data;
+ size_t got_len;
- if(!url_text) {
- purple_debug_error("jabber",
- "do_buddy_avatar_update_fromurl got error \"%s\"",
- error_message);
+ if (!purple_http_response_is_successfull(response)) {
+ purple_debug_error("jabber", "do_buddy_avatar_update_fromurl "
+ "got error \"%s\"",
+ purple_http_response_get_error(response));
goto out;
}
- icon_data = g_memdup(url_text, len);
- purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, icon_data, len, info->id);
+ got_data = purple_http_response_get_data(response, &got_len);
+ icon_data = g_memdup(got_data, got_len);
+ purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, icon_data, got_len, info->id);
out:
g_free(info->from);
@@ -378,20 +380,19 @@ update_buddy_metadata(JabberStream *js,
jabber_pep_request_item(js, from, NS_AVATAR_1_1_DATA, id,
do_buddy_avatar_update_data);
} else {
- PurpleUtilFetchUrlData *url_data;
+ PurpleHttpRequest *req;
+ PurpleHttpConnection *http_conn;
JabberBuddyAvatarUpdateURLInfo *info = g_new0(JabberBuddyAvatarUpdateURLInfo, 1);
info->js = js;
- url_data = purple_util_fetch_url(url, TRUE, NULL, TRUE,
- MAX_HTTP_BUDDYICON_BYTES,
- do_buddy_avatar_update_fromurl, info);
- if (url_data) {
- info->from = g_strdup(from);
- info->id = g_strdup(id);
- js->url_datas = g_slist_prepend(js->url_datas, url_data);
- } else
- g_free(info);
+ req = purple_http_request_new(url);
+ purple_http_request_set_max_len(req, MAX_HTTP_BUDDYICON_BYTES);
+ http_conn = purple_http_request(js->gc, req, do_buddy_avatar_update_fromurl, info);
+ purple_http_request_unref(req);
+ info->from = g_strdup(from);
+ info->id = g_strdup(id);
+ js->http_conns = g_slist_prepend(js->http_conns, http_conn);
}
}
}
diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c
--- a/libpurple/protocols/msn/msn.c
+++ b/libpurple/protocols/msn/msn.c
@@ -26,8 +26,8 @@
#include "internal.h"
#include "debug.h"
+#include "http.h"
#include "request.h"
-#include "obsolete.h"
#include "accountopt.h"
#include "contact.h"
@@ -2277,8 +2277,8 @@ msn_get_photo_url(const char *url_text)
return NULL;
}
-static void msn_got_photo(PurpleUtilFetchUrlData *url_data, gpointer data,
- const gchar *url_text, gsize len, const gchar *error_message);
+static void msn_got_photo(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
+ gpointer _info2_data);
#endif
@@ -2315,10 +2315,10 @@ msn_info_strip_search_link(const char *f
}
static void
-msn_got_info(PurpleUtilFetchUrlData *url_data, gpointer data,
- const gchar *url_text, size_t len, const gchar *error_message)
+msn_got_info(PurpleHttpConnection *http_conn,
+ PurpleHttpResponse *response, gpointer _info_data)
{
- MsnGetInfoData *info_data = (MsnGetInfoData *)data;
+ MsnGetInfoData *info_data = _info_data;
MsnSession *session;
PurpleNotifyUserInfo *user_info;
char *stripped, *p, *q, *tmp;
@@ -2330,20 +2330,20 @@ msn_got_info(PurpleUtilFetchUrlData *url
gboolean has_contact_info = FALSE;
char *url_buffer;
int stripped_len;
+ const gchar *got_data;
+ size_t got_len;
#if PHOTO_SUPPORT
char *photo_url_text = NULL;
MsnGetInfoStepTwoData *info2_data = NULL;
#endif
- purple_debug_info("msn", "In msn_got_info,url_text:{%s}\n",url_text);
-
session = purple_connection_get_protocol_data(info_data->gc);
- session->url_datas = g_slist_remove(session->url_datas, url_data);
+ session->http_reqs = g_slist_remove(session->http_reqs, http_conn);
user_info = purple_notify_user_info_new();
has_tooltip_text = msn_tooltip_extract_info_text(user_info, info_data);
- if (error_message != NULL || url_text == NULL || strcmp(url_text, "") == 0)
+ if (!purple_http_response_is_successfull(response))
{
purple_notify_user_info_add_pair_html(user_info,
_("Error retrieving profile"), NULL);
@@ -2356,12 +2356,16 @@ msn_got_info(PurpleUtilFetchUrlData *url
return;
}
- url_buffer = g_strdup(url_text);
+ got_data = purple_http_response_get_data(response, &got_len);
+
+ purple_debug_info("msn", "In msn_got_info,url_text:{%s}\n", got_data);
+
+ url_buffer = g_strdup(got_data);
/* If they have a homepage link, MSN masks it such that we need to
* fetch the url out before purple_markup_strip_html() nukes it */
/* I don't think this works with the new spaces profiles - Stu 3/2/06 */
- if ((p = strstr(url_text,
+ if ((p = strstr(url_buffer,
"Take a look at my </font><A class=viewDesc title=\"")) != NULL)
{
p += 50;
@@ -2709,7 +2713,7 @@ msn_got_info(PurpleUtilFetchUrlData *url
#if PHOTO_SUPPORT
/* Find the URL to the photo; must be before the marshalling [Bug 994207] */
- photo_url_text = msn_get_photo_url(url_text);
+ photo_url_text = msn_get_photo_url(got_data);
purple_debug_info("msn", "photo url:{%s}\n", photo_url_text ? photo_url_text : "(null)");
More information about the Commits
mailing list