annotate finch/plugins/gnttinyurl.c @ 29368:746bf7d8b34e

Combine the CurrentMedia and MsnUserPhoneInfo structs. This makes MsnUser smaller by the size of one pointer. Since both of these structs are used only rarely, this ends up saving memory for most people.
author Mark Doliner <mark@kingant.net>
date Fri, 05 Feb 2010 02:19:22 +0000
parents 6b328370cad0
children 904686722499
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
1 /**
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
2 * @file gnttinyurl.c
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
3 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
4 * Copyright (C) 2009 Richard Nelson <wabz@whatsbeef.net>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
5 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
9 * (at your option) any later version.
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
10 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
14 * GNU General Public License for more details.
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
15 *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
19 */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
20
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
21
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
22 #include "internal.h"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
23 #include <glib.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
24
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
25 #define PLUGIN_STATIC_NAME TinyURL
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
26 #define PREFS_BASE "/plugins/gnt/tinyurl"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
27 #define PREF_LENGTH PREFS_BASE "/length"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
28 #define PREF_URL PREFS_BASE "/url"
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
29
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
30
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
31 #include <conversation.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
32 #include <signals.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
33
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
34 #include <glib.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
35
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
36 #include <plugin.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
37 #include <version.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
38 #include <debug.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
39 #include <notify.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
40
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
41 #include <gntconv.h>
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
42
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
43 #include <gntplugin.h>
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
44
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
45 #include <gntlabel.h>
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
46 #include <gnttextview.h>
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
47 #include <gntwindow.h>
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
48
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
49 static int tag_num = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
50
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
51 typedef struct
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
52 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
53 PurpleConversation *conv;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
54 gchar *tag;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
55 int num;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
56 } CbInfo;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
57
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
58 static void process_urls(PurpleConversation *conv, GList *urls);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
59
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
60 /* 3 functions from util.c */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
61 static gboolean
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
62 badchar(char c)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
63 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
64 switch (c) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
65 case ' ':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
66 case ',':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
67 case '\0':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
68 case '\n':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
69 case '\r':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
70 case '<':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
71 case '>':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
72 case '"':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
73 case '\'':
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
74 return TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
75 default:
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
76 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
77 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
78 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
79
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
80 static gboolean
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
81 badentity(const char *c)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
82 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
83 if (!g_ascii_strncasecmp(c, "&lt;", 4) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
84 !g_ascii_strncasecmp(c, "&gt;", 4) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
85 !g_ascii_strncasecmp(c, "&quot;", 6)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
86 return TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
87 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
88 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
89 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
90
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
91 static GList *extract_urls(const char *text)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
92 {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
93 const char *t, *c, *q = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
94 char *url_buf;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
95 GList *ret = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
96 gboolean inside_html = FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
97 int inside_paren = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
98 c = text;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
99 while (*c) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
100 if (*c == '(' && !inside_html) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
101 inside_paren++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
102 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
103 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
104 if (inside_html) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
105 if (*c == '>') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
106 inside_html = FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
107 } else if (!q && (*c == '\"' || *c == '\'')) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
108 q = c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
109 } else if(q) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
110 if(*c == *q)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
111 q = NULL;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
112 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
113 } else if (*c == '<') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
114 inside_html = TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
115 if (!g_ascii_strncasecmp(c, "<A", 2)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
116 while (1) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
117 if (*c == '>') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
118 inside_html = FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
119 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
120 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
121 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
122 if (!(*c))
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
123 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
124 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
125 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
126 } else if ((*c=='h') && (!g_ascii_strncasecmp(c, "http://", 7) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
127 (!g_ascii_strncasecmp(c, "https://", 8)))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
128 t = c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
129 while (1) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
130 if (badchar(*t) || badentity(t)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
131
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
132 if ((!g_ascii_strncasecmp(c, "http://", 7) && (t - c == 7)) ||
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
133 (!g_ascii_strncasecmp(c, "https://", 8) && (t - c == 8))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
134 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
135 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
136
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
137 if (*(t) == ',' && (*(t + 1) != ' ')) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
138 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
139 continue;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
140 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
141
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
142 if (*(t - 1) == '.')
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
143 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
144 if ((*(t - 1) == ')' && (inside_paren > 0))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
145 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
146 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
147
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
148 url_buf = g_strndup(c, t - c);
26584
f9a923fde1e4 Remove usage of g_strcmp0 (which would bump the glib version requirement) where strcmp will do nicely
Richard Nelson <wabz@pidgin.im>
parents: 26582
diff changeset
149 if (!g_list_find_custom(ret, url_buf, (GCompareFunc)strcmp)) {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
150 purple_debug_info("TinyURL", "Added URL %s\n", url_buf);
28711
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
151 ret = g_list_append(ret, url_buf);
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
152 } else {
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
153 g_free(url_buf);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
154 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
155 c = t;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
156 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
157 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
158 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
159
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
160 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
161 } else if (!g_ascii_strncasecmp(c, "www.", 4) && (c == text || badchar(c[-1]) || badentity(c-1))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
162 if (c[4] != '.') {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
163 t = c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
164 while (1) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
165 if (badchar(*t) || badentity(t)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
166 if (t - c == 4) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
167 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
168 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
169
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
170 if (*(t) == ',' && (*(t + 1) != ' ')) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
171 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
172 continue;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
173 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
174
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
175 if (*(t - 1) == '.')
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
176 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
177 if ((*(t - 1) == ')' && (inside_paren > 0))) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
178 t--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
179 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
180 url_buf = g_strndup(c, t - c);
26584
f9a923fde1e4 Remove usage of g_strcmp0 (which would bump the glib version requirement) where strcmp will do nicely
Richard Nelson <wabz@pidgin.im>
parents: 26582
diff changeset
181 if (!g_list_find_custom(ret, url_buf, (GCompareFunc)strcmp)) {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
182 purple_debug_info("TinyURL", "Added URL %s\n", url_buf);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
183 ret = g_list_append(ret, url_buf);
28711
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
184 } else {
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
185 g_free(url_buf);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
186 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
187 c = t;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
188 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
189 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
190 t++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
191 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
192 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
193 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
194 if (*c == ')' && !inside_html) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
195 inside_paren--;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
196 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
197 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
198 if (*c == 0)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
199 break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
200 c++;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
201 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
202 return ret;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
203 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
204
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
205 static void url_fetched(PurpleUtilFetchUrlData *url_data, gpointer cb_data,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
206 const gchar *url_text, gsize len, const gchar *error_message)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
207 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
208 CbInfo *data = (CbInfo *)cb_data;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
209 PurpleConversation *conv = data->conv;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
210 GList *convs = purple_get_conversations();
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
211 /* ensure the conversation still exists */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
212 for (; convs; convs = convs->next) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
213 if ((PurpleConversation *)(convs->data) == conv) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
214 FinchConv *fconv = FINCH_CONV(conv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
215 gchar *str = g_strdup_printf("[%d] %s", data->num, url_text);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
216 GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
217 gnt_text_view_tag_change(tv, data->tag, str, FALSE);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
218 g_free(str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
219 g_free(data->tag);
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
220 g_free(data);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
221 return;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
222 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
223 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
224 g_free(data->tag);
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
225 g_free(data);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
226 purple_debug_info("TinyURL", "Conversation no longer exists... :(\n");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
227 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
228
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
229 static void free_urls(gpointer data, gpointer null)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
230 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
231 g_free(data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
232 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
233
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
234 static gboolean writing_msg(PurpleAccount *account, char *sender, char **message,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
235 PurpleConversation *conv, PurpleMessageFlags flags)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
236 {
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
237 GString *t;
28711
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
238 GList *iter, *urls, *next;
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
239 int c = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
240
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
241 if ((flags & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_INVISIBLE)))
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
242 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
243
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
244 urls = purple_conversation_get_data(conv, "TinyURLs");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
245 if (urls != NULL) /* message was cancelled somewhere? Reset. */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
246 g_list_foreach(urls, free_urls, NULL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
247 g_list_free(urls);
27031
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
248 urls = extract_urls(*message);
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
249 if (!urls)
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
250 return FALSE;
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
251
0f1b41c2f835 Reduce work if there is no URL in the incoming message.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26589
diff changeset
252 t = g_string_new(*message);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
253 g_free(*message);
28711
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
254 for (iter = urls; iter; iter = next) {
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
255 next = iter->next;
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
256 if (g_utf8_strlen((char *)iter->data, -1) >= purple_prefs_get_int(PREF_LENGTH)) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
257 int pos, x = 0;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
258 gchar *j, *s, *str, *orig;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
259 glong len = g_utf8_strlen(iter->data, -1);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
260 s = g_strdup(t->str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
261 orig = s;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
262 str = g_strdup_printf("[%d]", ++c);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
263 while ((j = strstr(s, iter->data))) { /* replace all occurrences */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
264 pos = j - orig + (x++ * 3);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
265 s = j + len;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
266 t = g_string_insert(t, pos + len, str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
267 if (*s == '\0') break;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
268 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
269 g_free(orig);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
270 g_free(str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
271 continue;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
272 } else {
28711
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
273 g_free(iter->data);
6b328370cad0 Fix leaks, and a bug.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28676
diff changeset
274 urls = g_list_delete_link(urls, iter);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
275 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
276 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
277 *message = t->str;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
278 g_string_free(t, FALSE);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
279 if (conv == NULL)
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
280 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
281 purple_conversation_set_data(conv, "TinyURLs", urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
282 return FALSE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
283 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
284
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
285 static void wrote_msg(PurpleAccount *account, char *sender, char *message,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
286 PurpleConversation *conv, PurpleMessageFlags flags)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
287 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
288 GList *urls;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
289
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
290 urls = purple_conversation_get_data(conv, "TinyURLs");
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
291 if ((flags & PURPLE_MESSAGE_SEND) || urls == NULL)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
292 return;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
293
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
294 process_urls(conv, urls);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
295 purple_conversation_set_data(conv, "TinyURLs", NULL);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
296 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
297
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
298 /* Frees 'urls' */
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
299 static void
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
300 process_urls(PurpleConversation *conv, GList *urls)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
301 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
302 GList *iter;
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
303 int c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
304 FinchConv *fconv = FINCH_CONV(conv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
305 GntTextView *tv = GNT_TEXT_VIEW(fconv->tv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
306
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
307 for (iter = urls, c = 0; iter; iter = iter->next) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
308 int i;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
309 CbInfo *cbdata;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
310 gchar *url, *str, *tmp;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
311 cbdata = g_new(CbInfo, 1);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
312 cbdata->num = ++c;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
313 cbdata->tag = g_strdup_printf("%s%d", "tiny_", tag_num++);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
314 cbdata->conv = conv;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
315 tmp = purple_unescape_html((char *)iter->data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
316 if (g_ascii_strncasecmp(tmp, "http://", 7) && g_ascii_strncasecmp(tmp, "https://", 8)) {
26589
c5920a8cf83f encode urls passed to tinyurl
Richard Nelson <wabz@pidgin.im>
parents: 26584
diff changeset
317 url = g_strdup_printf("%shttp%%3A%%2F%%2F%s", purple_prefs_get_string(PREF_URL), purple_url_encode(tmp));
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
318 } else {
26589
c5920a8cf83f encode urls passed to tinyurl
Richard Nelson <wabz@pidgin.im>
parents: 26584
diff changeset
319 url = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL), purple_url_encode(tmp));
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
320 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
321 g_free(tmp);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
322 purple_util_fetch_url(url, TRUE, "finch", FALSE, url_fetched, cbdata);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
323 i = gnt_text_view_get_lines_below(tv);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
324 str = g_strdup_printf(_("\nFetching TinyURL..."));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
325 gnt_text_view_append_text_with_tag((tv), str, GNT_TEXT_FLAG_DIM, cbdata->tag);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
326 g_free(str);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
327 if (i == 0)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
328 gnt_text_view_scroll(tv, 0);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
329 g_free(iter->data);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
330 g_free(url);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
331 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
332 g_list_free(urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
333 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
334
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
335 static void
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
336 free_conv_urls(PurpleConversation *conv)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
337 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
338 GList *urls = purple_conversation_get_data(conv, "TinyURLs");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
339 if (urls)
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
340 g_list_foreach(urls, free_urls, NULL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
341 g_list_free(urls);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
342 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
343
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
344 static void tinyurl_notify_fetch_cb(PurpleUtilFetchUrlData *urldata, gpointer cbdata,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
345 const gchar *urltext, gsize len, const gchar *error)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
346 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
347 GntWidget *win = cbdata;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
348 GntWidget *label = g_object_get_data(G_OBJECT(win), "info-widget");
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
349 char *message;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
350
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
351 message = g_strdup_printf(_("TinyURL for above: %s"), urltext);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
352 gnt_label_set_text(GNT_LABEL(label), message);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
353 g_free(message);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
354
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
355 g_signal_handlers_disconnect_matched(G_OBJECT(win), G_SIGNAL_MATCH_FUNC,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
356 0, 0, NULL,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
357 G_CALLBACK(purple_util_fetch_url_cancel), NULL);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
358 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
359
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
360 static void *
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
361 tinyurl_notify_uri(const char *uri)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
362 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
363 char *fullurl = NULL;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
364 GntWidget *win;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
365 PurpleUtilFetchUrlData *urlcb;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
366
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
367 /* XXX: The following expects that finch_notify_message gets called. This
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
368 * may not always happen, e.g. when another plugin sets its own
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
369 * notify_message. So tread carefully. */
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
370 win = purple_notify_message(NULL, PURPLE_NOTIFY_URI, _("URI"), uri,
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
371 _("Please wait while TinyURL fetches a shorter URL ..."), NULL, NULL);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
372 if (!GNT_IS_WINDOW(win) || !g_object_get_data(G_OBJECT(win), "info-widget"))
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
373 return win;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
374
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
375 if (g_ascii_strncasecmp(uri, "http://", 7) && g_ascii_strncasecmp(uri, "https://", 8)) {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
376 fullurl = g_strdup_printf("%shttp%%3A%%2F%%2F%s",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
377 purple_prefs_get_string(PREF_URL), purple_url_encode(uri));
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
378 } else {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
379 fullurl = g_strdup_printf("%s%s", purple_prefs_get_string(PREF_URL),
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
380 purple_url_encode(uri));
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
381 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
382
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
383 /* Store the return value of _fetch_url and destroy that when win is
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
384 destroyed, so that the callback for _fetch_url does not try to molest a
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
385 non-existent window */
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
386 urlcb = purple_util_fetch_url(fullurl, TRUE, "finch", FALSE, tinyurl_notify_fetch_cb, win);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
387 g_free(fullurl);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
388 g_signal_connect_swapped(G_OBJECT(win), "destroy",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
389 G_CALLBACK(purple_util_fetch_url_cancel), urlcb);
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
390
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
391 return win;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
392 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
393
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
394 static gboolean
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
395 plugin_load(PurplePlugin *plugin)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
396 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
397 PurpleNotifyUiOps *ops = purple_notify_get_ui_ops();
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
398 plugin->extra = ops->notify_uri;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
399 ops->notify_uri = tinyurl_notify_uri;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
400
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
401 purple_signal_connect(purple_conversations_get_handle(),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
402 "wrote-im-msg",
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
403 plugin, PURPLE_CALLBACK(wrote_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
404 purple_signal_connect(purple_conversations_get_handle(),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
405 "wrote-chat-msg",
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
406 plugin, PURPLE_CALLBACK(wrote_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
407 purple_signal_connect(purple_conversations_get_handle(),
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
408 "writing-im-msg",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
409 plugin, PURPLE_CALLBACK(writing_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
410 purple_signal_connect(purple_conversations_get_handle(),
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
411 "writing-chat-msg",
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
412 plugin, PURPLE_CALLBACK(writing_msg), NULL);
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
413 purple_signal_connect(purple_conversations_get_handle(),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
414 "deleting-conversation",
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
415 plugin, PURPLE_CALLBACK(free_conv_urls), NULL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
416
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
417 return TRUE;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
418 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
419
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
420 static gboolean
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
421 plugin_unload(PurplePlugin *plugin)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
422 {
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
423 PurpleNotifyUiOps *ops = purple_notify_get_ui_ops();
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
424 if (ops->notify_uri == tinyurl_notify_uri)
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
425 ops->notify_uri = plugin->extra;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
426 return TRUE;
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
427 }
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
428
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
429 static PurplePluginPrefFrame *
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
430 get_plugin_pref_frame(PurplePlugin *plugin) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
431
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
432 PurplePluginPrefFrame *frame;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
433 PurplePluginPref *pref;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
434
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
435 frame = purple_plugin_pref_frame_new();
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
436
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
437 pref = purple_plugin_pref_new_with_name(PREF_LENGTH);
28337
6aa8e64fdbb7 Capitalize the abbreviation "URL," as suggested by F Wolff on the
Mark Doliner <mark@kingant.net>
parents: 27031
diff changeset
438 purple_plugin_pref_set_label(pref, _("Only create TinyURL for URLs"
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
439 " of this length or greater"));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
440 purple_plugin_pref_frame_add(frame, pref);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
441 pref = purple_plugin_pref_new_with_name(PREF_URL);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
442 purple_plugin_pref_set_label(pref, _("TinyURL (or other) address prefix"));
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
443 purple_plugin_pref_frame_add(frame, pref);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
444
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
445 return frame;
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
446 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
447
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
448 static PurplePluginUiInfo prefs_info = {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
449 get_plugin_pref_frame,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
450 0, /* page_num (Reserved) */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
451 NULL, /* frame (Reserved) */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
452
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
453 /* padding */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
454 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
455 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
456 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
457 NULL
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
458 };
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
459
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
460 static PurplePluginInfo info =
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
461 {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
462 PURPLE_PLUGIN_MAGIC,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
463 PURPLE_MAJOR_VERSION,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
464 PURPLE_MINOR_VERSION,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
465 PURPLE_PLUGIN_STANDARD,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
466 FINCH_PLUGIN_TYPE,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
467 0,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
468 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
469 PURPLE_PRIORITY_DEFAULT,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
470 "TinyURL",
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
471 N_("TinyURL"),
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
472 DISPLAY_VERSION,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
473 N_("TinyURL plugin"),
28338
4e7b8902da90 Add a verb to this sentence, as suggested by F Wolff on the translators
Mark Doliner <mark@kingant.net>
parents: 28337
diff changeset
474 N_("When receiving a message with URL(s), use TinyURL for easier copying"),
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
475 "Richard Nelson <wabz@whatsbeef.net>",
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
476 PURPLE_WEBSITE,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
477 plugin_load,
28676
7eaf2561b6dd Extend the TinyURL plugin.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28338
diff changeset
478 plugin_unload,
26582
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
479 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
480 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
481 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
482 &prefs_info, /**< prefs_info */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
483 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
484
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
485 /* padding */
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
486 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
487 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
488 NULL,
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
489 NULL
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
490 };
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
491
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
492 static void
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
493 init_plugin(PurplePlugin *plugin) {
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
494 purple_prefs_add_none(PREFS_BASE);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
495 purple_prefs_add_int(PREF_LENGTH, 30);
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
496 purple_prefs_add_string(PREF_URL, "http://tinyurl.com/api-create.php?url=");
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
497 }
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
498
8986c3804ada Add a gnt TinyURL plugin. Closes #2017
Richard Nelson <wabz@pidgin.im>
parents:
diff changeset
499 PURPLE_INIT_PLUGIN(PLUGIN_STATIC_NAME, init_plugin, info)