Control: tags -1 patch

I am including the necessary changes to make pragha compile with
libsoup3. I have not run the resulting binary.
Description: This is included upstream in
 https://github.com/pragha-music-player/pragha/commit/5a9def6faff1161dc86d1eeeb033c98a81d87334
---
--- a/plugins/acoustid/pragha-acoustid-plugin.c
+++ b/plugins/acoustid/pragha-acoustid-plugin.c
@@ -280,7 +280,7 @@ pragha_acoustid_plugin_get_metadata (PraghaAcoustidPlugin *plugin, gint duration
 	query = g_strdup_printf ("http://api.acoustid.org/v2/lookup?client=%s&meta=%s&format=%s&duration=%d&fingerprint=%s";,
 	                         "yPvUXBmO", "recordings+releasegroups+compress", "xml", duration, fingerprint);
 
-	session = soup_session_sync_new ();
+	session = soup_session_new ();
 
 	msg = soup_message_new ("GET", query);
 	soup_session_queue_message (session, msg,
--- a/plugins/tunein/pragha-tunein-plugin.c
+++ b/plugins/tunein/pragha-tunein-plugin.c
@@ -197,7 +197,7 @@ pragha_tunein_plugin_get_radio (PraghaTuneinPlugin *plugin, const gchar *field)
 	escaped_field = g_uri_escape_string (field, NULL, TRUE);
 	query = g_strdup_printf ("%s%s", "http://opml.radiotime.com/Search.aspx?query=";, escaped_field);
 
-	session = soup_session_sync_new ();
+	session = soup_session_new ();
 
 	msg = soup_message_new ("GET", query);
 	soup_session_queue_message (session, msg,
Origin: backport, https://github.com/loqs/pragha/commit/a9474c485116f243c8bb221b008a740da1b989a9
From: loqs <[email protected]>
Date: Tue, 15 Apr 2025 16:40:22 +0000
Subject: WIP Switch to libsoup3

Bastian Germann: Backport to 1.3.4
---
--- a/configure.ac
+++ b/configure.ac
@@ -148,9 +148,9 @@ dnl Check libpsuop
 LIBSOUP_FOUND="no"
 if test x"$LIBPEAS_FOUND" = x"yes"; then
 XDT_CHECK_OPTIONAL_PACKAGE([LIBSOUP],
-                           [libsoup-2.4], [2.38],
-                           [libsoup-2.4],
-                           [libsoup-2.4 library], [yes])
+                           [libsoup-3.0], [3.0],
+                           [libsoup-3.0],
+                           [libsoup-3.0 library], [yes])
 else
 AM_CONDITIONAL([HAVE_LIBSOUP], 0)
 fi
diff --git a/plugins/acoustid/pragha-acoustid-plugin.c b/plugins/acoustid/pragha-acoustid-plugin.c
index 7f7cd11b..0a5ebdd8 100644
--- a/plugins/acoustid/pragha-acoustid-plugin.c
+++ b/plugins/acoustid/pragha-acoustid-plugin.c
@@ -184,9 +184,9 @@ pragha_acoustid_dialog_response (GtkWidget            *dialog,
 }
 
 static void
-pragha_acoustid_plugin_get_metadata_done (SoupSession *session,
-                                          SoupMessage *msg,
-                                          gpointer     user_data)
+pragha_acoustid_plugin_get_metadata_done (GObject      *source,
+                                          GAsyncResult *res,
+                                          gpointer      user_data)
 {
 	GtkWidget *dialog;
 	GtkWidget *window;
@@ -194,7 +194,14 @@ pragha_acoustid_plugin_get_metadata_done (SoupSession *session,
 	XMLNode *xml = NULL, *xi;
 	gchar *otitle = NULL, *oartist = NULL, *oalbum = NULL;
 	gchar *ntitle = NULL, *nartist = NULL, *nalbum = NULL;
+	gchar *data;
 	gint prechanged = 0;
+	g_autoptr(GBytes) response = NULL;
+	g_autoptr(GError) error = NULL;
+	gsize length = 0;
+	SoupSession *session;
+	SoupMessage *msg;
+	SoupStatus status_code;
 
 	PraghaAcoustidPlugin *plugin = user_data;
 	PraghaAcoustidPluginPrivate *priv = plugin->priv;
@@ -202,7 +209,10 @@ pragha_acoustid_plugin_get_metadata_done (SoupSession *session,
 	window = pragha_application_get_window (priv->pragha);
 	remove_watch_cursor (window);
 
-	if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code))
+	session = SOUP_SESSION (source);
+	msg = soup_session_get_async_result_message (session, res);
+	status_code = soup_message_get_status (msg);
+	if (!SOUP_STATUS_IS_SUCCESSFUL (status_code))
 		return;
 
 	g_object_get (priv->mobj,
@@ -211,7 +221,9 @@ pragha_acoustid_plugin_get_metadata_done (SoupSession *session,
 	              "album", &oalbum,
 	              NULL);
 
-	xml = tinycxml_parse ((gchar *)msg->response_body->data);
+	response = soup_session_send_and_read_finish (session, res, &error);
+	data = (gchar *)g_bytes_get_data (response, &length);
+	xml = tinycxml_parse (data);
 
 	xi = xmlnode_get (xml, CCA{"response", "results", "result", "recordings", "recording", "title", NULL }, NULL, NULL);
 	if (xi && string_is_not_empty(xi->content)) {
@@ -283,8 +295,8 @@ pragha_acoustid_plugin_get_metadata (PraghaAcoustidPlugin *plugin, gint duration
 	session = soup_session_new ();
 
 	msg = soup_message_new ("GET", query);
-	soup_session_queue_message (session, msg,
-	                            pragha_acoustid_plugin_get_metadata_done, plugin);
+	soup_session_send_and_read_async (session, msg, G_PRIORITY_DEFAULT, NULL,
+	                                  pragha_acoustid_plugin_get_metadata_done, plugin);
 
 	g_free (query);
 }
@@ -457,4 +469,4 @@ pragha_plugin_deactivate (PeasActivatable *activatable)
 	priv->merge_id_main_menu = 0;
 
 	pragha_menubar_remove_action (priv->pragha, "pragha-plugins-placeholder", "search-metadata");
-}
\ No newline at end of file
+}
diff --git a/plugins/tunein/pragha-tunein-plugin.c b/plugins/tunein/pragha-tunein-plugin.c
index 36618947..3aefa022 100644
--- a/plugins/tunein/pragha-tunein-plugin.c
+++ b/plugins/tunein/pragha-tunein-plugin.c
@@ -121,9 +121,9 @@ tunein_helper_get_atribute (XMLNode *xml, const gchar *atribute)
 }
 
 static void
-pragha_tunein_plugin_get_radio_done (SoupSession *session,
-                                     SoupMessage *msg,
-                                     gpointer     user_data)
+pragha_tunein_plugin_get_radio_done (GObject      *source,
+                                     GAsyncResult *res,
+                                     gpointer      user_data)
 {
 	GtkWidget *window;
 	PraghaPlaylist *playlist;
@@ -132,6 +132,14 @@ pragha_tunein_plugin_get_radio_done (SoupSession *session,
 	XMLNode *xml = NULL, *xi;
 	const gchar *type = NULL, *name = NULL, *url = NULL;
 	gchar *uri_parsed, *name_fixed = NULL;
+	gchar *data;
+	g_autoptr(GBytes) response = NULL;
+	g_autoptr(GError) error = NULL;
+	gsize length = 0;
+	SoupSession *session;
+	SoupMessage *msg;
+	SoupStatus status_code;
+
 
 	PraghaTuneinPlugin *plugin = user_data;
 	PraghaTuneinPluginPrivate *priv = plugin->priv;
@@ -139,10 +147,15 @@ pragha_tunein_plugin_get_radio_done (SoupSession *session,
 	window = pragha_application_get_window (priv->pragha);
 	remove_watch_cursor (window);
 
-	if (!SOUP_STATUS_IS_SUCCESSFUL (msg->status_code))
+	session = SOUP_SESSION (source);
+	msg = soup_session_get_async_result_message (session, res);
+	status_code = soup_message_get_status (msg);
+	if (!SOUP_STATUS_IS_SUCCESSFUL (status_code))
 		return;
 
-	xml = tinycxml_parse ((gchar *)msg->response_body->data);
+	response = soup_session_send_and_read_finish (session, res, &error);
+	data = (gchar *)g_bytes_get_data (response, &length);
+	xml = tinycxml_parse (data);
 	xi = xmlnode_get (xml, CCA{"opml", "body", "outline", NULL }, NULL, NULL);
 	for(;xi;xi= xi->next) {
 		type = tunein_helper_get_atribute (xi, "type");
@@ -200,8 +213,8 @@ pragha_tunein_plugin_get_radio (PraghaTuneinPlugin *plugin, const gchar *field)
 	session = soup_session_new ();
 
 	msg = soup_message_new ("GET", query);
-	soup_session_queue_message (session, msg,
-	                            pragha_tunein_plugin_get_radio_done, plugin);
+	soup_session_send_and_read_async (session, msg, G_PRIORITY_DEFAULT, NULL,
+	                                  pragha_tunein_plugin_get_radio_done, plugin);
 
 	g_free (escaped_field);
 	g_free (query);

Reply via email to