Convert GG pubdir to libsoup.

Fri, 11 Oct 2019 21:42:51 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 11 Oct 2019 21:42:51 -0400
changeset 40020
76afb08714b4
parent 40019
5bf1b06ebd65
child 40021
6b1b05adda03

Convert GG pubdir to libsoup.

libpurple/protocols/gg/pubdir-prpl.c file | annotate | diff | comparison | revisions
--- a/libpurple/protocols/gg/pubdir-prpl.c	Fri Oct 11 04:20:32 2019 -0400
+++ b/libpurple/protocols/gg/pubdir-prpl.c	Fri Oct 11 21:42:51 2019 -0400
@@ -28,6 +28,7 @@
  */
 
 #include "pubdir-prpl.h"
+#include "gg.h"
 
 #include <debug.h>
 #include <http.h>
@@ -135,8 +136,9 @@
 	g_free(request);
 }
 
-static void ggp_pubdir_got_data(PurpleHttpConnection *http_conn,
-	PurpleHttpResponse *response, gpointer _request)
+static void
+ggp_pubdir_got_data(G_GNUC_UNUSED SoupSession *session, SoupMessage *msg,
+                    gpointer _request)
 {
 	ggp_pubdir_request *request = _request;
 	PurpleConnection *gc = request->gc;
@@ -147,7 +149,7 @@
 	int record_count, i;
 	ggp_pubdir_record *records;
 
-	xml_raw = purple_http_response_get_data(response, NULL);
+	xml_raw = msg->response_body->data;
 
 	if (purple_debug_is_verbose() && purple_debug_is_unsafe()) {
 		purple_debug_misc("gg", "ggp_pubdir_got_data: xml=[%s]\n",
@@ -272,7 +274,9 @@
 ggp_pubdir_get_info_got_token(PurpleConnection *gc, const gchar *token,
                               gpointer _request)
 {
-	PurpleHttpRequest *req;
+	GGPInfo *info = NULL;
+	gchar *url;
+	SoupMessage *msg;
 	ggp_pubdir_request *request = _request;
 
 	PURPLE_ASSERT_CONNECTION_IS_VALID(gc);
@@ -283,12 +287,14 @@
 		return;
 	}
 
-	req = purple_http_request_new(NULL);
-	purple_http_request_set_url_printf(req, "http://api.gadu-gadu.pl/users/%u",
-	                                   request->params.user_info.uin);
-	purple_http_request_header_set(req, "Authorization", token);
-	purple_http_request(gc, req, ggp_pubdir_got_data, request);
-	purple_http_request_unref(req);
+	info = purple_connection_get_protocol_data(gc);
+
+	url = g_strdup_printf("http://api.gadu-gadu.pl/users/%u",
+	                      request->params.user_info.uin);
+	msg = soup_message_new("GET", url);
+	g_free(url);
+	soup_message_headers_replace(msg->request_headers, "Authorization", token);
+	soup_session_queue_message(info->http, msg, ggp_pubdir_got_data, request);
 }
 
 void
@@ -501,7 +507,9 @@
 static void ggp_pubdir_search_got_token(PurpleConnection *gc,
 	const gchar *token, gpointer _request)
 {
-	PurpleHttpRequest *req;
+	GGPInfo *info = NULL;
+	gchar *url;
+	SoupMessage *msg;
 	ggp_pubdir_request *request = _request;
 	gchar *query;
 
@@ -517,12 +525,14 @@
 
 	query = ggp_pubdir_search_make_query(request->params.search_form);
 
-	req = purple_http_request_new(NULL);
-	purple_http_request_set_url_printf(req, "http://api.gadu-gadu.pl%s", query);
-	purple_http_request_header_set(req, "Authorization", token);
-	purple_http_request(gc, req, ggp_pubdir_got_data, request);
-	purple_http_request_unref(req);
+	info = purple_connection_get_protocol_data(gc);
 
+	url = g_strdup_printf("http://api.gadu-gadu.pl%s", query);
+	msg = soup_message_new("GET", url);
+	soup_message_headers_replace(msg->request_headers, "Authorization", token);
+	soup_session_queue_message(info->http, msg, ggp_pubdir_got_data, request);
+
+	g_free(url);
 	g_free(query);
 }
 
@@ -744,17 +754,16 @@
  ******************************************************************************/
 
 static void
-ggp_pubdir_set_info_got_response(PurpleHttpConnection *http_conn,
-                                 PurpleHttpResponse *response,
-                                 gpointer user_data)
+ggp_pubdir_set_info_got_response(G_GNUC_UNUSED SoupSession *session,
+                                 SoupMessage *msg, gpointer user_data)
 {
-	if (!purple_http_response_is_successful(response)) {
+	if (!SOUP_STATUS_IS_SUCCESSFUL(msg->status_code)) {
 		purple_debug_error("gg", "ggp_pubdir_set_info_got_response: failed");
 		return;
 	}
 
 	purple_debug_info("gg", "ggp_pubdir_set_info_got_response: [%s]",
-	                  purple_http_response_get_data(response, NULL));
+	                  msg->response_body->data);
 	/* <result><status>0</status></result> */
 
 	/* TODO: notify about failure */
@@ -763,8 +772,10 @@
 static void ggp_pubdir_set_info_got_token(PurpleConnection *gc,
 	const gchar *token, gpointer _record)
 {
-	PurpleHttpRequest *req;
 	ggp_pubdir_record *record = _record;
+	GGPInfo *info = NULL;
+	SoupMessage *msg;
+	gchar *url;
 	gchar *request_data;
 	gchar *name, *surname, *city;
 	uin_t uin = record->uin;
@@ -777,6 +788,8 @@
 		return;
 	}
 
+	info = purple_connection_get_protocol_data(gc);
+
 	name = g_uri_escape_string(record->first_name, NULL, FALSE);
 	surname = g_uri_escape_string(record->last_name, NULL, FALSE);
 	city = g_uri_escape_string(record->city, NULL, FALSE);
@@ -801,18 +814,15 @@
 			"query [%s]\n", request_data);
 	}
 
-	req = purple_http_request_new(NULL);
-	purple_http_request_set_method(req, "PUT");
-	purple_http_request_set_url_printf(req,
-		"http://api.gadu-gadu.pl/users/%u.xml", uin);
-	purple_http_request_header_set(req, "Authorization", token);
-	purple_http_request_header_set(req, "Content-Type",
-		"application/x-www-form-urlencoded");
-	purple_http_request_set_contents(req, request_data, -1);
-	purple_http_request(gc, req, ggp_pubdir_set_info_got_response, NULL);
-	purple_http_request_unref(req);
+	url = g_strdup_printf("http://api.gadu-gadu.pl/users/%u.xml", uin);
+	msg = soup_message_new("PUT", url);
+	soup_message_headers_replace(msg->request_headers, "Authorization", token);
+	soup_message_set_request(msg, "application/x-www-form-urlencoded",
+	                         SOUP_MEMORY_TAKE, request_data, -1);
+	soup_session_queue_message(info->http, msg,
+	                           ggp_pubdir_set_info_got_response, NULL);
 
-	g_free(request_data);
+	g_free(url);
 	ggp_pubdir_record_free(record, 1);
 }
 

mercurial