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