Replace the removed soup_form_request_new API

Tue, 14 Dec 2021 01:58:31 -0600

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Tue, 14 Dec 2021 01:58:31 -0600
changeset 41216
5c4269ad7ee4
parent 41215
43a4dc8903fb
child 41217
f79d8f49abe8

Replace the removed soup_form_request_new API

They are gone in libsoup 3.

Testing Done:
Compiled against libsoup 2 and 3

Reviewed at https://reviews.imfreedom.org/r/1187/

libpurple/protocols/facebook/api.c file | annotate | diff | comparison | revisions
libpurple/protocols/gg/avatar.c file | annotate | diff | comparison | revisions
libpurple/soupcompat.h file | annotate | diff | comparison | revisions
pidgin/plugins/relnot.c file | annotate | diff | comparison | revisions
--- a/libpurple/protocols/facebook/api.c	Tue Dec 14 01:57:01 2021 -0600
+++ b/libpurple/protocols/facebook/api.c	Tue Dec 14 01:58:31 2021 -0600
@@ -728,7 +728,7 @@
 	g_list_free(keys);
 	g_free(data);
 
-	msg = soup_form_request_new_from_hash("POST", url, params);
+	msg = soup_message_new_from_encoded_form("POST", url, soup_form_encode_hash(params));
 	fb_http_params_free(params);
 
 	if (priv->token != NULL) {
--- a/libpurple/protocols/gg/avatar.c	Tue Dec 14 01:57:01 2021 -0600
+++ b/libpurple/protocols/gg/avatar.c	Tue Dec 14 01:58:31 2021 -0600
@@ -279,8 +279,9 @@
 	purple_debug_misc("gg", "ggp_avatar_own_got_token: "
 		"uploading new avatar...\n");
 
-	req = soup_form_request_new("POST", "http://avatars.nowe.gg/upload", "uin",
-	                            uin_str, "photo", img_data, NULL);
+	req = soup_message_new_from_encoded_form(
+	        "POST", "http://avatars.nowe.gg/upload",
+	        soup_form_encode("uin", uin_str, "photo", img_data, NULL));
 	// purple_http_request_set_max_len(req, GGP_AVATAR_RESPONSE_MAX);
 	headers = soup_message_get_request_headers(req);
 	soup_message_headers_replace(headers, "Authorization", token);
--- a/libpurple/soupcompat.h	Tue Dec 14 01:57:01 2021 -0600
+++ b/libpurple/soupcompat.h	Tue Dec 14 01:58:31 2021 -0600
@@ -51,6 +51,43 @@
 	return msg->status_code;
 }
 
+static inline SoupMessage *
+soup_message_new_from_encoded_form(const gchar *method,
+                                   const gchar *uri_string,
+                                   gchar *encoded_form)
+{
+	SoupMessage *msg = NULL;
+	SoupURI *uri;
+
+	g_return_val_if_fail(method != NULL, NULL);
+	g_return_val_if_fail(uri_string != NULL, NULL);
+	g_return_val_if_fail(encoded_form != NULL, NULL);
+
+	uri = soup_uri_new(uri_string);
+	if (!uri || !uri->host) {
+		g_free(encoded_form);
+		soup_uri_free(uri);
+		return NULL;
+	}
+
+	if (strcmp(method, "GET") == 0) {
+		g_free(uri->query);
+		uri->query = encoded_form;
+		msg = soup_message_new_from_uri(method, uri);
+	} else if (strcmp (method, "POST") == 0 || strcmp (method, "PUT") == 0) {
+		msg = soup_message_new_from_uri(method, uri);
+		soup_message_body_append_take(msg->request_body,
+		                              (guchar *)encoded_form,
+		                              strlen(encoded_form));
+	} else {
+		g_free(encoded_form);
+	}
+
+	soup_uri_free(uri);
+
+	return msg;
+}
+
 #endif /* SOUP_MAJOR_VERSION < 3 */
 
 #endif /* PURPLE_SOUPCOMPAT_H */
--- a/pidgin/plugins/relnot.c	Tue Dec 14 01:57:01 2021 -0600
+++ b/pidgin/plugins/relnot.c	Tue Dec 14 01:58:31 2021 -0600
@@ -101,15 +101,16 @@
 
 		purple_debug_info("relnot", "Checking for new version.");
 
-		msg = soup_form_request_new("GET", "https://pidgin.im/version.php",
-		                            "version", purple_core_get_version(),
-		                            "build",
+		msg = soup_message_new_from_encoded_form("GET", "https://pidgin.im/version.php",
+		        soup_form_encode(
+		                "version", purple_core_get_version(),
+		                "build",
 #ifdef _WIN32
-		                            "purple-win32",
+		                "purple-win32",
 #else
-		                            "purple",
+		                "purple",
 #endif
-		                            NULL);
+		                NULL));
 
 		soup_session_queue_message(session, msg, version_fetch_cb, NULL);
 

mercurial