[evolution-rss] reuse auth information for fetching favicons
- From: Lucian Langa <lucilanga src gnome org>
- To: svn-commits-list gnome org
- Subject: [evolution-rss] reuse auth information for fetching favicons
- Date: Mon, 29 Jun 2009 19:44:37 +0000 (UTC)
commit 4b64c6f992b49d2de72c429db9626ed48af1a8d4
Author: Lucian Langa <lucilanga gnome org>
Date: Mon Jun 29 22:43:44 2009 +0300
reuse auth information for fetching favicons
TODO | 4 +---
src/network-soup.c | 3 +--
src/rss.c | 33 ++++++++++++++++++++++++++-------
3 files changed, 28 insertions(+), 12 deletions(-)
---
diff --git a/TODO b/TODO
index b328a1c..afdebd3 100644
--- a/TODO
+++ b/TODO
@@ -36,12 +36,10 @@
* feed check runtime validation
* wrong send and receive count of articles after import
* handle 404 for images in comments
- * gtkhtml does not handle script properly
+ * gtkhtml does not handle script tag properly
* gtkhtml does not handle 
 construct
* switch webkit -> gecko leeds to crash on pfree()
* show feed icons in send & receive dialog
- * folder creation/articles not fetched after adding feed
* favicon is not displayed after it is fetched
* cancel fetching comments when summary display is changed
* detect duplicate items by content not by feedid
- * sometimes adding feeds is interrupted by rf->cancel signal
diff --git a/src/network-soup.c b/src/network-soup.c
index afc5d87..15cb356 100644
--- a/src/network-soup.c
+++ b/src/network-soup.c
@@ -275,8 +275,7 @@ read_up(gpointer data)
g_free(feed_dir);
FILE *fr = fopen(feed_name, "r");
- if (fr)
- {
+ if (fr) {
fgets(rfeed, 511, fr);
g_hash_table_insert(rf->hruser, data, g_strstrip(g_strdup(rfeed)));
fgets(rfeed, 511, fr);
diff --git a/src/rss.c b/src/rss.c
index 6fc5a00..5008bf9 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -240,6 +240,7 @@ guint fallback_engine(void);
gchar *print_comments(gchar *url, gchar *stream);
static void refresh_cb (GtkWidget *button, EMFormatHTMLPObject *pobject);
+void dup_auth_data(gchar *origurl, gchar *url);
/*======================================================================*/
@@ -1730,7 +1731,8 @@ org_gnome_rss_controls (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobjec
gtk_box_pack_start (GTK_BOX (hbox2), label3, TRUE, TRUE, 0);
GtkWidget *button = gtk_button_new_with_label(
- rf->cur_format ? _("Show Summary") : _("Show Full Text"));
+ rf->cur_format ? _("Show Summary") :
+ _("Show Full Text"));
gtk_button_set_image (
GTK_BUTTON (button),
@@ -1992,9 +1994,9 @@ void org_gnome_cooly_format_rss(void *ep, EMFormatHookTarget *t) //camelmimepart
if (category)
camel_stream_printf(fstream,
"<div style=\"border: solid 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
- "<b><font size=-1>Posted under: %s</font></b></div>",
+ "<b><font size=-1>%s: %s</font></b></div>",
content_colour & 0xEDECEB & 0xffffff, text_colour & 0xffffff,
- category);
+ _("Posted under"), category);
camel_stream_printf (fstream,
"<div style=\"border: solid #%06x 0px; background-color: #%06x; padding: 2px; color: #%06x;\">"
"%s</div>",
@@ -3187,8 +3189,9 @@ finish_update_feed_image (SoupSession *soup_sess, SoupMessage *msg, gpointer use
else
icon_url = (char *)icon;
+ dup_auth_data(url, g_strdup(icon_url));
fetch_unblocking(
- icon_url,
+ g_strdup(icon_url),
textcb,
NULL,
(gpointer)finish_create_image,
@@ -3199,8 +3202,9 @@ finish_update_feed_image (SoupSession *soup_sess, SoupMessage *msg, gpointer use
} else {
// r->image = NULL;
icon_url = g_strconcat(urldir, "/favicon.ico", NULL);
+ dup_auth_data(url, g_strdup(icon_url));
fetch_unblocking(
- icon_url,
+ g_strdup(icon_url),
textcb,
NULL,
(gpointer)finish_create_image,
@@ -3210,8 +3214,9 @@ finish_update_feed_image (SoupSession *soup_sess, SoupMessage *msg, gpointer use
NULL);
g_free(icon_url);
icon_url = g_strconcat(server, "/favicon.ico", NULL);
+ dup_auth_data(url, g_strdup(icon_url));
fetch_unblocking(
- icon_url,
+ g_strdup(icon_url),
textcb,
NULL,
(gpointer)finish_create_image,
@@ -3265,6 +3270,17 @@ out: g_free(fav_file);
}
void
+dup_auth_data(gchar *origurl, gchar *url)
+{
+ gchar *user = g_hash_table_lookup(rf->hruser, origurl);
+ gchar *pass = g_hash_table_lookup(rf->hrpass, origurl);
+ if (user && pass) {
+ g_hash_table_insert(rf->hruser, url, g_strdup(user));
+ g_hash_table_insert(rf->hrpass, url, g_strdup(pass));
+ }
+}
+
+void
update_feed_image(RDF *r)
{
GError *err = NULL;
@@ -3281,6 +3297,7 @@ update_feed_image(RDF *r)
if (image) { //we need to validate image here with load_pixbuf
CamelStream *feed_fs = camel_stream_fs_new_with_name(feed_file,
O_RDWR|O_CREAT, 0666);
+ dup_auth_data(r->uri, image);
fetch_unblocking(image,
textcb,
NULL,
@@ -3295,6 +3312,8 @@ update_feed_image(RDF *r)
}
} else {
gchar *server = get_server_from_uri(r->uri);
+ //authentication data might be different
+ dup_auth_data(r->uri, server);
fetch_unblocking(
server,
textcb,
@@ -4124,7 +4143,7 @@ e_plugin_lib_enable(EPluginLib *ep, int enable)
if (enable) {
bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
+ // textdomain (GETTEXT_PACKAGE);
rss_gconf = gconf_client_get_default();
upgrade = 1;
char *d;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]