2013-02-20 [colin] 3.9.0cvs87
[claws.git] / src / plugins / rssyl / feed.h
1 #ifndef __FEED_H
2 #define __FEED_H
3
4 #include <libxml/parser.h>
5
6 #include "procmsg.h"
7
8 #include "rssyl.h"
9
10 #define RSSYL_TMP_TEMPLATE      "curltmpXXXXXX"
11
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"
16
17 #define RSSYL_TEXT_START                "<!-- RSSyl text start -->"
18 #define RSSYL_TEXT_END                  "<!-- RSSyl text end -->"
19
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")
24
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")
28
29 struct _RSSylFeedItemMedia {
30         gchar *url;
31         gchar *type;
32         gulong size;
33 };
34
35 typedef struct _RSSylFeedItemMedia RSSylFeedItemMedia;
36
37 struct _RSSylFeedItem {
38         gchar *title;
39         gchar *text;
40         gchar *link;
41         gchar *parent_link;
42         gchar *comments_link;
43         gchar *author;
44         gchar *id;
45         gboolean id_is_permalink;
46
47         RSSylFeedItemMedia *media;
48
49 #ifdef RSSYL_DEBUG
50         long int debug_fetched;
51 #endif  /* RSSYL_DEBUG */
52
53         gchar *realpath;
54         time_t date;
55         time_t date_published;
56 };
57
58 typedef struct _RSSylFeedItem RSSylFeedItem;
59
60 struct _RSSylFindByUrlCtx {
61         gchar *url;
62         RSSylFolderItem *ritem;
63 };
64
65 typedef struct _RSSylFindByUrlCtx RSSylFindByUrlCtx;
66
67 struct _RSSylParseCtx {
68         RSSylFolderItem *ritem;
69         gboolean ready;
70 };
71
72 typedef struct _RSSylParseCtx RSSylParseCtx;
73
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);
82
83 void rssyl_start_refresh_timeout(RSSylFolderItem *ritem);
84 void rssyl_expire_items(RSSylFolderItem *ritem);
85
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);
89
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);
93
94 #endif /* __FEED_H */