00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __M_RSS_H__
00020 #define __M_RSS_H__
00021
00022 #include <sys/types.h>
00023
00024 typedef struct mrss_t mrss_t;
00025 typedef struct mrss_item_t mrss_item_t;
00026 typedef struct mrss_category_t mrss_category_t;
00027 typedef struct mrss_hour_t mrss_hour_t;
00028 typedef struct mrss_day_t mrss_day_t;
00029 typedef void * mrss_generic_t;
00030
00032 typedef enum {
00033 MRSS_OK = 0,
00034 MRSS_ERR_POSIX,
00035 MRSS_ERR_PARSER,
00036 MRSS_ERR_VERSION,
00037 MRSS_ERR_DATA
00038 } mrss_error_t;
00039
00040 typedef enum {
00041 MRSS_VERSION_0_91,
00042 MRSS_VERSION_0_92,
00043 MRSS_VERSION_2_0
00044 } mrss_version_t;
00045
00047 typedef enum {
00048
00049
00051 MRSS_FLAG_VERSION = 1,
00052
00054 MRSS_FLAG_TITLE,
00056 MRSS_FLAG_DESCRIPTION,
00058 MRSS_FLAG_LINK,
00060 MRSS_FLAG_LANGUAGE,
00062 MRSS_FLAG_RATING,
00064 MRSS_FLAG_COPYRIGHT,
00066 MRSS_FLAG_PUBDATE,
00068 MRSS_FLAG_LASTBUILDDATE,
00070 MRSS_FLAG_DOCS,
00072 MRSS_FLAG_MANAGINGEDITOR,
00074 MRSS_FLAG_WEBMASTER,
00076 MRSS_FLAG_GENERATOR,
00078 MRSS_FLAG_TTL,
00079
00080
00081
00083 MRSS_FLAG_IMAGE_TITLE,
00085 MRSS_FLAG_IMAGE_URL,
00087 MRSS_FLAG_IMAGE_LINK,
00089 MRSS_FLAG_IMAGE_WIDTH,
00091 MRSS_FLAG_IMAGE_HEIGHT,
00093 MRSS_FLAG_IMAGE_DESCRIPTION,
00094
00095
00096
00098 MRSS_FLAG_TEXTINPUT_TITLE,
00100 MRSS_FLAG_TEXTINPUT_DESCRIPTION,
00102 MRSS_FLAG_TEXTINPUT_NAME,
00104 MRSS_FLAG_TEXTINPUT_LINK,
00105
00106
00107
00109 MRSS_FLAG_CLOUD,
00111 MRSS_FLAG_CLOUD_DOMAIN,
00113 MRSS_FLAG_CLOUD_PORT,
00115 MRSS_FLAG_CLOUD_PATH,
00118 MRSS_FLAG_CLOUD_REGISTERPROCEDURE,
00120 MRSS_FLAG_CLOUD_PROTOCOL,
00121
00122
00123
00125 MRSS_FLAG_HOUR,
00126
00127
00128
00130 MRSS_FLAG_DAY,
00131
00132
00133
00135 MRSS_FLAG_CATEGORY,
00137 MRSS_FLAG_CATEGORY_DOMAIN,
00138
00139
00140
00142 MRSS_FLAG_ITEM_TITLE,
00144 MRSS_FLAG_ITEM_LINK,
00146 MRSS_FLAG_ITEM_DESCRIPTION,
00148 MRSS_FLAG_ITEM_AUTHOR,
00150 MRSS_FLAG_ITEM_COMMENTS,
00152 MRSS_FLAG_ITEM_PUBDATE,
00154 MRSS_FLAG_ITEM_GUID,
00157 MRSS_FLAG_ITEM_GUID_ISPERMALINK,
00159 MRSS_FLAG_ITEM_SOURCE,
00161 MRSS_FLAG_ITEM_SOURCE_URL,
00163 MRSS_FLAG_ITEM_ENCLOSURE,
00165 MRSS_FLAG_ITEM_ENCLOSURE_URL,
00168 MRSS_FLAG_ITEM_ENCLOSURE_LENGTH,
00170 MRSS_FLAG_ITEM_ENCLOSURE_TYPE,
00171
00173 MRSS_FLAG_END = 0
00174
00175 } mrss_flag_t;
00176
00178 typedef enum {
00180 MRSS_ELEMENT_CHANNEL,
00182 MRSS_ELEMENT_ITEM,
00184 MRSS_ELEMENT_SKIPHOURS,
00186 MRSS_ELEMENT_SKIPDAYS,
00188 MRSS_ELEMENT_CATEGORY
00189 } mrss_element_t;
00190
00196 struct mrss_item_t {
00197 mrss_element_t element;
00198
00199
00200 char *title;
00201 char *link;
00202 char *description;
00203
00204 char *author;
00205 char *comments;
00206 char *pubDate;
00207 char *guid;
00208 int guid_isPermaLink;
00209
00210 char *source;
00211 char *source_url;
00212
00213 char *enclosure;
00214 char *enclosure_url;
00215 int enclosure_length;
00216 char *enclosure_type;
00217
00218 mrss_category_t *category;
00219
00220 mrss_item_t *next;
00221 };
00222
00227 struct mrss_hour_t {
00228 mrss_element_t element;
00229
00230 char *hour;
00231 mrss_hour_t *next;
00232 };
00233
00238 struct mrss_day_t {
00239 mrss_element_t element;
00240
00241 char *day;
00242 mrss_day_t *next;
00243 };
00244
00249 struct mrss_category_t {
00250 mrss_element_t element;
00251
00252 char *category;
00253 char *domain;
00254 mrss_category_t *next;
00255 };
00256
00261 struct mrss_t {
00262 mrss_element_t element;
00263
00264 char *file;
00265 size_t size;
00266
00267 mrss_version_t version;
00268
00269 char *title;
00270 char *description;
00271 char *link;
00272 char *language;
00273 char *rating;
00274 char *copyright;
00275 char *pubDate;
00276 char *lastBuildDate;
00277 char *docs;
00278 char *managingeditor;
00279 char *webMaster;
00280 char *generator;
00281 int ttl;
00282
00283
00284 char *image_title;
00285 char *image_url;
00286 char *image_link;
00287 unsigned int image_width;
00288 unsigned int image_height;
00289 char *image_description;
00290
00291
00292 char *textinput_title;
00293 char *textinput_description;
00294 char *textinput_name;
00295 char *textinput_link;
00296
00297
00298 char *cloud;
00299 char *cloud_domain;
00300 int cloud_port;
00301 char *cloud_path;
00302 char *cloud_registerProcedure;
00303 char *cloud_protocol;
00304
00305 mrss_hour_t *skipHours;
00306 mrss_day_t *skipDays;
00307
00308 mrss_category_t *category;
00309
00310 mrss_item_t *item;
00311 };
00312
00322 mrss_error_t mrss_parse_url (char *url,
00323 mrss_t **mrss);
00324
00331 mrss_error_t mrss_parse_file (char *file,
00332 mrss_t **mrss);
00333
00341 mrss_error_t mrss_parse_buffer (char *buffer,
00342 size_t size_buffer,
00343 mrss_t **mrss);
00344
00353 mrss_error_t mrss_write_file (mrss_t *mrss,
00354 char *file);
00355
00370 mrss_error_t mrss_write_buffer (mrss_t *mrss,
00371 char **buffer);
00372
00389 mrss_error_t mrss_free (mrss_generic_t element);
00390
00398 char * mrss_strerror (mrss_error_t err);
00399
00406 mrss_error_t mrss_element (mrss_generic_t element,
00407 mrss_element_t *ret);
00408
00445 mrss_error_t mrss_new (mrss_t **mrss);
00446
00460 mrss_error_t mrss_set (mrss_generic_t element,
00461 ...);
00462
00474 mrss_error_t mrss_get (mrss_generic_t element,
00475 ...);
00476
00500 mrss_error_t mrss_new_subdata (mrss_generic_t element,
00501 mrss_element_t subelement,
00502 mrss_generic_t subdata);
00503
00516 mrss_error_t mrss_remove_subdata (mrss_generic_t element,
00517 mrss_generic_t subdata);
00518
00519 #endif
00520
00521
00522