3a9e25dfe6a8a84444c1b2118d8946b55c697865
[claws.git] / src / plugins / rssyl / rssyl.h
1 #ifndef __RSSYL_H
2 #define __RSSYL_H
3
4 #include <glib.h>
5
6 #include <folder.h>
7 #include <passwordstore.h>
8
9 #include "libfeed/feed.h"
10
11 #define PLUGIN_NAME "RSSyl"
12
13 /* Name of directory in rcdir where RSSyl will store its data. */
14 #define RSSYL_DIR               PLUGIN_NAME
15
16 /* Folder name for a new feed, before it is parsed for the first time. */
17 #define RSSYL_NEW_FOLDER_NAME           "NewFeed"
18
19 /* Default RSSyl mailbox name */
20 #define RSSYL_DEFAULT_MAILBOX   _("My Feeds")
21
22 /* Default feed to be added when creating mailbox for the first time */
23 #define RSSYL_DEFAULT_FEED      "http://planet.claws-mail.org/rss20.xml"
24
25 /* File where info about user-deleted feed items is stored */
26 #define RSSYL_DELETED_FILE ".deleted"
27
28 struct _RFolderItem {
29         FolderItem item;
30         gchar *url;
31         FeedAuth *auth;
32         gchar *official_title;
33         gchar *source_id;
34
35         gboolean keep_old;
36
37         gboolean default_refresh_interval;
38         gint refresh_interval;
39
40         gboolean fetch_comments;
41         gint fetch_comments_max_age;
42
43         gint silent_update;
44         gboolean write_heading;
45         gboolean ignore_title_rename;
46         gboolean ssl_verify_peer;
47
48         guint refresh_id;
49         gboolean fetching_comments;
50         time_t last_update;
51
52         struct _RFeedProp *feedprop;
53
54         GSList *items;
55         GSList *deleted_items;
56 };
57
58 typedef struct _RFolderItem RFolderItem;
59
60 struct _RRefreshCtx {
61         RFolderItem *ritem;
62         guint id;
63 };
64
65 typedef struct _RRefreshCtx RRefreshCtx;
66
67 struct _RFetchCtx {
68         Feed *feed;
69         guint response_code;
70         gchar *error;
71         gboolean success;
72         gboolean ready;
73 };
74
75 typedef struct _RFetchCtx RFetchCtx;
76
77 struct _RParseCtx {
78         RFolderItem *ritem;
79         gboolean ready;
80 };
81
82 typedef struct _RParseCtx RParseCtx;
83
84 struct _RDeletedItem {
85         gchar *id;
86         gchar *title;
87         time_t date_published;
88         time_t date_modified;
89 };
90
91 typedef struct _RDeletedItem RDeletedItem;
92
93 void rssyl_init(void);
94 void rssyl_done(void);
95
96 FolderClass *rssyl_folder_get_class(void);
97
98 FolderItem *rssyl_get_root_folderitem(FolderItem *item);
99
100 #define IS_RSSYL_FOLDER_ITEM(item) \
101         (item->folder->klass == rssyl_folder_get_class())
102
103 #define rssyl_passwd_set(ritem, pwd) \
104         passwd_store_set(PWS_PLUGIN, PLUGIN_NAME, ritem->url, pwd, FALSE)
105 #define rssyl_passwd_get(ritem) \
106         passwd_store_get(PWS_PLUGIN, PLUGIN_NAME, ritem->url)
107
108 #endif /* __RSSYL_H */