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	"https://www.claws-mail.org/releases.rss"
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 */
109