4 #include <libxml/parser.h>
10 #define RSSYL_TMP_TEMPLATE "curltmpXXXXXX"
12 #define RSSYL_XPATH_ROOT "/rssyl"
13 #define RSSYL_XPATH_TITLE RSSYL_XPATH_ROOT"/title"
14 #define RSSYL_XPATH_LINK RSSYL_XPATH_ROOT"/link"
15 #define RSSYL_XPATH_TEXT RSSYL_XPATH_ROOT"/text"
17 #define RSSYL_TEXT_START "<!-- RSSyl text start -->"
18 #define RSSYL_TEXT_END "<!-- RSSyl text end -->"
20 #define RSSYL_LOG_ERROR_TIMEOUT _("Time out connecting to URL %s\n")
21 #define RSSYL_LOG_ERROR_FETCH _("Couldn't fetch URL %s\n")
22 #define RSSYL_LOG_ERROR_PARSE _("Error parsing feed from URL %s\n")
23 #define RSSYL_LOG_ERROR_UNKNOWN _("Unsupported feed type at URL %s\n")
25 #define RSSYL_LOG_UPDATING _("RSSyl: Updating feed %s\n")
26 #define RSSYL_LOG_UPDATED _("RSSyl: Feed update finished: %s\n")
27 #define RSSYL_LOG_EXITING _("RSSyl: Feed update aborted, application is exiting.\n")
29 struct _RSSylFeedItemMedia {
35 typedef struct _RSSylFeedItemMedia RSSylFeedItemMedia;
37 struct _RSSylFeedItem {
45 gboolean id_is_permalink;
47 RSSylFeedItemMedia *media;
50 long int debug_fetched;
51 #endif /* RSSYL_DEBUG */
55 time_t date_published;
58 typedef struct _RSSylFeedItem RSSylFeedItem;
60 struct _RSSylFindByUrlCtx {
62 RSSylFolderItem *ritem;
65 typedef struct _RSSylFindByUrlCtx RSSylFindByUrlCtx;
67 struct _RSSylParseCtx {
68 RSSylFolderItem *ritem;
72 typedef struct _RSSylParseCtx RSSylParseCtx;
74 xmlDocPtr rssyl_fetch_feed(const gchar *url, time_t last_update, gchar **title, gchar **error);
75 void rssyl_parse_feed(xmlDocPtr doc, RSSylFolderItem *ritem, gchar *parent);
76 gboolean rssyl_add_feed_item(RSSylFolderItem *ritem, RSSylFeedItem *fitem);
77 MsgInfo *rssyl_parse_feed_item_to_msginfo(gchar *file, MsgFlags flags,
78 gboolean a, gboolean b, FolderItem *item);
79 void rssyl_remove_feed_cache(FolderItem *item);
80 void rssyl_update_feed(RSSylFolderItem *ritem);
81 void rssyl_read_existing(RSSylFolderItem *ritem);
83 void rssyl_start_refresh_timeout(RSSylFolderItem *ritem);
84 void rssyl_expire_items(RSSylFolderItem *ritem);
86 FolderItem *rssyl_subscribe_new_feed(FolderItem *parent, const gchar *url, gboolean verbose);
87 void rssyl_free_feeditem(RSSylFeedItem *item);
88 gchar *rssyl_format_string(const gchar *str, gboolean replace_html, gboolean replace_returns);
90 void rssyl_refresh_all_func(FolderItem *item, gpointer data);
91 void rssyl_refresh_all_feeds(void);
92 gchar *rssyl_feed_title_to_dir(const gchar *title);