finch/plugins/gnttinyurl/gnttinyurl.c

changeset 41705
667d00a75b7d
parent 41704
f25917ae8556
child 41837
169e4fc02dca
--- a/finch/plugins/gnttinyurl/gnttinyurl.c	Mon Sep 19 04:29:45 2022 -0500
+++ b/finch/plugins/gnttinyurl/gnttinyurl.c	Mon Sep 19 04:36:38 2022 -0500
@@ -21,9 +21,9 @@
 #include <glib.h>
 #include <libsoup/soup.h>
 
-#define PREFS_BASE          "/plugins/gnt/tinyurl"
-#define PREF_LENGTH  PREFS_BASE "/length"
-#define PREF_URL  PREFS_BASE "/url"
+#define PREFS_SCHEMA "im.pidgin.Finch.plugin.TinyURL"
+#define PREF_LENGTH "length"
+#define PREF_URL "url"
 
 #include <purple.h>
 
@@ -235,6 +235,8 @@
 	GString *t;
 	GList *iter, *urls, *next;
 	int c = 0;
+	GSettings *settings = NULL;
+	gint min_url_length;
 
 	if (purple_message_get_flags(msg) & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_INVISIBLE))
 		return FALSE;
@@ -245,10 +247,15 @@
 	if (!urls)
 		return FALSE;
 
+	settings = g_settings_new_with_backend(PREFS_SCHEMA,
+	                                       purple_core_get_settings_backend());
+	min_url_length = g_settings_get_int(settings, PREF_LENGTH);
+	g_object_unref(settings);
+
 	t = g_string_new(g_strdup(purple_message_get_contents(msg)));
 	for (iter = urls; iter; iter = next) {
 		next = iter->next;
-		if (g_utf8_strlen((char *)iter->data, -1) >= purple_prefs_get_int(PREF_LENGTH)) {
+		if (g_utf8_strlen((char *)iter->data, -1) >= min_url_length) {
 			int pos, x = 0;
 			gchar *j, *s, *str, *orig;
 			glong len = g_utf8_strlen(iter->data, -1);
@@ -300,6 +307,13 @@
 	int c;
 	FinchConv *fconv = FINCH_CONV(conv);
 	GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
+	GSettings *settings = NULL;
+	gchar *tinyurl_prefix = NULL;
+
+	settings = g_settings_new_with_backend(PREFS_SCHEMA,
+	                                       purple_core_get_settings_backend());
+	tinyurl_prefix = g_settings_get_string(settings, PREF_URL);
+	g_object_unref(settings);
 
 	for (iter = urls, c = 1; iter; iter = iter->next, c++) {
 		int i;
@@ -329,9 +343,11 @@
 		cbdata->tag = g_strdup_printf("%s%d", "tiny_", tag_num++);
 		cbdata->conv = conv;
 		if (g_ascii_strncasecmp(original_url, "http://", 7) && g_ascii_strncasecmp(original_url, "https://", 8)) {
-			url = g_strdup_printf("%shttp%%3A%%2F%%2F%s", purple_prefs_get_string(PREF_URL), purple_url_encode(original_url));
+			url = g_strdup_printf("%shttp%%3A%%2F%%2F%s", tinyurl_prefix,
+			                      purple_url_encode(original_url));
 		} else {
-			url = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL), purple_url_encode(original_url));
+			url = g_strdup_printf("%s%s", tinyurl_prefix,
+			                      purple_url_encode(original_url));
 		}
 		msg = soup_message_new("GET", url);
 		soup_session_queue_message(session, msg, url_fetched, cbdata);
@@ -343,6 +359,7 @@
 		g_free(url);
 	}
 	g_list_free(urls);
+	g_free(tinyurl_prefix);
 }
 
 static void
@@ -400,6 +417,8 @@
 	GntWidget *win;
 	SoupMessage *msg;
 	const gchar *tiny_url;
+	GSettings *settings = NULL;
+	gchar *tinyurl_prefix = NULL;
 
 	/* XXX: The following expects that finch_notify_message gets called. This
 	 * may not always happen, e.g. when another plugin sets its own
@@ -415,14 +434,21 @@
 		return win;
 	}
 
+	settings = g_settings_new_with_backend(PREFS_SCHEMA,
+	                                       purple_core_get_settings_backend());
+	tinyurl_prefix = g_settings_get_string(settings, PREF_URL);
+	g_object_unref(settings);
+
 	if (g_ascii_strncasecmp(uri, "http://", 7) && g_ascii_strncasecmp(uri, "https://", 8)) {
-		fullurl = g_strdup_printf("%shttp%%3A%%2F%%2F%s",
-				purple_prefs_get_string(PREF_URL), purple_url_encode(uri));
+		fullurl = g_strdup_printf("%shttp%%3A%%2F%%2F%s", tinyurl_prefix,
+		                          purple_url_encode(uri));
 	} else {
-		fullurl = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL),
-				purple_url_encode(uri));
+		fullurl = g_strdup_printf("%s%s", tinyurl_prefix,
+		                          purple_url_encode(uri));
 	}
 
+	g_free(tinyurl_prefix);
+
 	g_object_set_data_full(G_OBJECT(win), "gnttinyurl-original", g_strdup(uri), g_free);
 
 	/* Store the SoupMessage and cancel that when the window is destroyed,
@@ -485,10 +511,6 @@
 
 	session = soup_session_new();
 
-	purple_prefs_add_none(PREFS_BASE);
-	purple_prefs_add_int(PREF_LENGTH, 30);
-	purple_prefs_add_string(PREF_URL, "http://tinyurl.com/api-create.php?url=");
-
 	g_object_set_data(G_OBJECT(plugin), "notify-uri", ops->notify_uri);
 	ops->notify_uri = tinyurl_notify_uri;
 

mercurial