libpurple/protocols/mxit/protocol.c

branch
soc.2013.gobjectification
changeset 34703
caf380128870
parent 34670
9bd5bd903dc7
parent 34236
65f7a964bab1
child 34728
8efd73063ecf
--- a/libpurple/protocols/mxit/protocol.c	Fri Jul 05 23:19:08 2013 +0530
+++ b/libpurple/protocols/mxit/protocol.c	Fri Jul 05 23:31:34 2013 +0530
@@ -26,7 +26,6 @@
 #include	"internal.h"
 #include	"debug.h"
 #include	"version.h"
-#include	"obsolete.h"
 
 #include	"protocol.h"
 #include	"mxit.h"
@@ -258,72 +257,70 @@
 }
 
 
-/*------------------------------------------------------------------------
+/**
  * Callback called for handling a HTTP GET response
  *
- *  @param url_data			libPurple internal object (see purple_util_fetch_url_request)
- *  @param user_data		The MXit session object
- *  @param url_text			The data returned (could be NULL if error)
- *  @param len				The length of the data returned (0 if error)
- *  @param error_message	Descriptive error message
+ * @param http_conn http api object (see http.h)
+ * @param response  http api object (see http.h)
+ * @param _session  The MXit session object
  */
-static void mxit_cb_http_rx( PurpleUtilFetchUrlData* url_data, gpointer user_data, const gchar* url_text, gsize len, const gchar* error_message )
+static void
+mxit_cb_http_rx(PurpleHttpConnection *http_conn, PurpleHttpResponse *response,
+	gpointer _session)
 {
-	struct MXitSession*		session		= (struct MXitSession*) user_data;
+	struct MXitSession *session = _session;
+	const gchar *got_data;
+	size_t got_len;
 
 	/* clear outstanding request */
-	session->async_calls = g_slist_remove( session->async_calls, url_data );
-
-	if ( ( !url_text ) || ( len == 0 ) ) {
-		/* error with request */
-		purple_debug_error( MXIT_PLUGIN_ID, "HTTP response error (%s)\n", error_message );
+	session->async_http_reqs = g_slist_remove(session->async_http_reqs,
+		http_conn);
+
+	if (!purple_http_response_is_successfull(response)) {
+		purple_debug_error(MXIT_PLUGIN_ID, "HTTP response error (%s)\n",
+			purple_http_response_get_error(response));
 		return;
 	}
 
 	/* convert the HTTP result */
-	memcpy( session->rx_dbuf, url_text, len );
-	session->rx_i = len;
-
-	mxit_parse_packet( session );
+	got_data = purple_http_response_get_data(response, &got_len);
+	memcpy(session->rx_dbuf, got_data, got_len);
+	session->rx_i = got_len;
+
+	mxit_parse_packet(session);
 }
 
 
-/*------------------------------------------------------------------------
+/**
  * TX Step 3: Write the packet data to the HTTP connection (GET style).
  *
- *  @param session		The MXit session object
- *  @param pktdata		The packet data
- *  @param pktlen		The length of the packet data
- *  @return				Return -1 on error, otherwise 0
+ * @param session The MXit session object
+ * @param packet  The packet data
  */
-static void mxit_write_http_get( struct MXitSession* session, struct tx_packet* packet )
+static void
+mxit_write_http_get(struct MXitSession* session, struct tx_packet* packet)
 {
-	PurpleUtilFetchUrlData*	url_data;
-	char*		part	= NULL;
-	char*		url		= NULL;
-
-	if ( packet->datalen > 0 ) {
-		char*	tmp		= NULL;
-
-		tmp = g_strndup( packet->data, packet->datalen );
-		part = g_strdup( purple_url_encode( tmp ) );
-		g_free( tmp );
+	PurpleHttpRequest *req;
+	PurpleHttpConnection *hc;
+	char *part = NULL;
+
+	if (packet->datalen > 0) {
+		char *tmp;
+
+		tmp = g_strndup(packet->data, packet->datalen);
+		part = g_strdup(purple_url_encode(tmp));
+		g_free(tmp);
 	}
 
-	url = g_strdup_printf( "%s?%s%s", session->http_server, purple_url_encode( packet->header ), ( !part ) ? "" : part );
-
-#ifdef	DEBUG_PROTOCOL
-	purple_debug_info( MXIT_PLUGIN_ID, "HTTP GET: '%s'\n", url );
-#endif
-
-	/* send the HTTP request */
-	url_data = purple_util_fetch_url_request( session->acc, url, TRUE, MXIT_HTTP_USERAGENT, TRUE, NULL, FALSE, -1, mxit_cb_http_rx, session );
-	if ( url_data )
-		session->async_calls = g_slist_prepend( session->async_calls, url_data );
-
-	g_free( url );
-	if ( part )
-		g_free( part );
+	req = purple_http_request_new(NULL);
+	purple_http_request_set_url_printf(req, "%s?%s%s", session->http_server,
+		purple_url_encode(packet->header), part ? part : "");
+	purple_http_request_header_set(req, "User-Agent", MXIT_HTTP_USERAGENT);
+	hc = purple_http_request(session->con, req, mxit_cb_http_rx, session);
+	purple_http_request_unref(req);
+	session->async_http_reqs = g_slist_prepend(session->async_http_reqs, hc);
+
+	g_free(part);
 }
 
 
@@ -2907,10 +2904,6 @@
 	session->flags &= ~MXIT_FLAG_CONNECTED;
 
 	/* cancel all outstanding async calls */
-	while ( session->async_calls ) {
-		purple_util_fetch_url_cancel( session->async_calls->data );
-		session->async_calls = g_slist_delete_link( session->async_calls, session->async_calls );
-	}
 	while (session->async_http_reqs) {
 		purple_http_conn_cancel(session->async_http_reqs->data);
 		session->async_http_reqs = g_slist_delete_link(session->async_http_reqs, session->async_http_reqs);

mercurial