1 |
james |
77 |
/* |
2 |
|
|
* This file is part of Sargasso, http://zamez.org/sargasso |
3 |
|
|
* Licensed under the GNU General Public License, |
4 |
|
|
* http://www.opensource.org/licenses/gpl-license |
5 |
|
|
* Copyright 2006 James Bursa <james@zamez.org> |
6 |
|
|
*/ |
7 |
|
|
|
8 |
|
|
#ifndef FEED_H |
9 |
|
|
#define FEED_H |
10 |
|
|
|
11 |
|
|
#include <stdbool.h> |
12 |
|
|
#include <curl/curl.h> |
13 |
|
|
#include <libxml/parser.h> |
14 |
|
|
|
15 |
|
|
|
16 |
|
|
#define FEED_MAX_ITEMS 50 |
17 |
|
|
|
18 |
|
|
typedef enum { FEED_NEW, FEED_FETCHING, FEED_OK, FEED_ERROR, FEED_UPDATE } |
19 |
|
|
feed_status; |
20 |
|
|
|
21 |
|
|
struct feed { |
22 |
|
|
char *url; |
23 |
|
|
feed_status status; |
24 |
|
|
bool updated; |
25 |
|
|
const char *error; |
26 |
|
|
CURL *curl; |
27 |
|
|
struct curl_slist *headers; |
28 |
|
|
char *status_line; |
29 |
|
|
char *etag; |
30 |
|
|
unsigned int redirect_count; |
31 |
|
|
char *redirect; |
32 |
|
|
char *data; |
33 |
|
|
size_t data_size; |
34 |
|
|
xmlChar *title; |
35 |
|
|
xmlChar *description; |
36 |
|
|
xmlChar *link; |
37 |
|
|
xmlChar *copyright; |
38 |
|
|
xmlChar *pub_date; |
39 |
|
|
xmlChar *category; |
40 |
|
|
struct { |
41 |
|
|
xmlChar *title; |
42 |
|
|
xmlChar *description; |
43 |
|
|
xmlChar *link; |
44 |
|
|
xmlChar *author; |
45 |
|
|
xmlChar *pub_date; |
46 |
|
|
xmlChar *category; |
47 |
|
|
xmlChar *guid; |
48 |
|
|
bool new_item; |
49 |
|
|
} item[FEED_MAX_ITEMS]; |
50 |
|
|
unsigned int item_count; |
51 |
|
|
}; |
52 |
|
|
|
53 |
|
|
extern struct feed *feeds; |
54 |
|
|
extern unsigned int feed_count; |
55 |
|
|
extern bool feed_work_needed; |
56 |
|
|
extern const char *feed_error; |
57 |
|
|
|
58 |
|
|
|
59 |
|
|
bool feed_init(void); |
60 |
|
|
void feed_quit(void); |
61 |
|
|
bool feed_add(const char *url); |
62 |
|
|
bool feed_remove(unsigned int i); |
63 |
|
|
bool feed_work(void); |
64 |
|
|
void feed_update(void); |
65 |
|
|
bool feed_list_load(const char *path); |
66 |
|
|
bool feed_list_save(const char *path); |
67 |
|
|
void feed_print(struct feed *feed); |
68 |
|
|
|
69 |
|
|
|
70 |
|
|
#endif |