Main Page | Data Structures | Directories | File List | Data Fields | Globals

mrss.h

Go to the documentation of this file.
00001 /* mRss - Copyright (C) 2005 bakunin - Andrea Marchesini 
00002  *                                <bakunin@autistici.org>
00003  *
00004  * This source code is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Public License as published 
00006  * by the Free Software Foundation; either version 2 of the License,
00007  * or (at your option) any later version.
00008  *
00009  * This source code is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00012  * Please refer to the GNU Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Public License along with
00015  * this source code; if not, write to:
00016  * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
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   /* Generic */
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   /* Image */
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   /* TextInput */
00096 
00098   MRSS_FLAG_TEXTINPUT_TITLE,
00100   MRSS_FLAG_TEXTINPUT_DESCRIPTION,
00102   MRSS_FLAG_TEXTINPUT_NAME,
00104   MRSS_FLAG_TEXTINPUT_LINK,
00105 
00106   /* Cloud */
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   /* SkipHours */
00123 
00125   MRSS_FLAG_HOUR,
00126 
00127   /* SkipDays */
00128 
00130   MRSS_FLAG_DAY,
00131 
00132   /* Category or Item/Category */
00133 
00135   MRSS_FLAG_CATEGORY,
00137   MRSS_FLAG_CATEGORY_DOMAIN,
00138 
00139   /* Item */
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                                 /*      0.91    0.92    2.0     */
00200   char *title;                  /*      R       O       O       */
00201   char *link;                   /*      R       O       O       */
00202   char *description;            /*      R       O       O       */
00203 
00204   char *author;                 /*      -       -       O       */
00205   char *comments;               /*      -       -       O       */
00206   char *pubDate;                /*      -       -       O       */
00207   char *guid;                   /*      -       -       O       */
00208   int guid_isPermaLink;         /*      -       -       O       */
00209 
00210   char *source;                 /*      -       O       O       */
00211   char *source_url;             /*      -       R       R       */
00212 
00213   char *enclosure;              /*      -       O       O       */
00214   char *enclosure_url;          /*      -       R       R       */
00215   int enclosure_length;         /*      -       R       R       */
00216   char *enclosure_type;         /*      -       R       R       */
00217 
00218   mrss_category_t *category;    /*      -       O       O       */
00219 
00220   mrss_item_t *next;
00221 };
00222 
00227 struct mrss_hour_t {
00228   mrss_element_t element;
00229                                 /*      0.91    0.92    2.0     */
00230   char *hour;                   /*      R       R       R       */
00231   mrss_hour_t *next;
00232 };
00233 
00238 struct mrss_day_t {
00239   mrss_element_t element;
00240                                 /*      0.91    0.92    2.0     */
00241   char *day;                    /*      R       R       R       */
00242   mrss_day_t *next;
00243 };
00244 
00249 struct mrss_category_t {
00250   mrss_element_t element;
00251                                 /*      0.91    0.92    2.0     */
00252   char *category;               /*      -       R       R       */
00253   char *domain;                 /*      -       O       O       */
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;       /*      0.91    0.92    2.0     */
00268 
00269   char *title;                  /*      R       R       R       */
00270   char *description;            /*      R       R       R       */
00271   char *link;                   /*      R       R       R       */
00272   char *language;               /*      R       O       O       */
00273   char *rating;                 /*      O       O       O       */
00274   char *copyright;              /*      O       O       O       */
00275   char *pubDate;                /*      O       O       O       */
00276   char *lastBuildDate;          /*      O       O       O       */
00277   char *docs;                   /*      O       O       O       */
00278   char *managingeditor;         /*      O       O       O       */
00279   char *webMaster;              /*      O       O       O       */
00280   char *generator;              /*      -       -       O       */
00281   int ttl;                      /*      -       -       O       */
00282   
00283   /* Tag Image: */              /*      O       O       O       */
00284   char *image_title;            /*      R       R       R       */
00285   char *image_url;              /*      R       R       R       */
00286   char *image_link;             /*      R       R       R       */
00287   unsigned int image_width;     /*      O       O       O       */
00288   unsigned int image_height;    /*      O       O       O       */
00289   char *image_description;      /*      O       O       O       */
00290 
00291   /* TextInput: */              /*      O       O       O       */
00292   char *textinput_title;        /*      R       R       R       */
00293   char *textinput_description;  /*      R       R       R       */
00294   char *textinput_name;         /*      R       R       R       */
00295   char *textinput_link;         /*      R       R       R       */
00296 
00297   /* Cloud */
00298   char *cloud;                  /*      -       O       O       */
00299   char *cloud_domain;           /*      -       R       R       */
00300   int cloud_port;               /*      -       R       R       */
00301   char *cloud_path;             /*      -       R       R       */
00302   char *cloud_registerProcedure;/*      -       R       R       */
00303   char *cloud_protocol;         /*      -       R       R       */
00304 
00305   mrss_hour_t *skipHours;       /*      O       O       O       */
00306   mrss_day_t *skipDays;         /*      O       O       O       */
00307 
00308   mrss_category_t *category;    /*      -       O       O       */
00309 
00310   mrss_item_t *item;            /*      R       R       R       */
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 /* EOF */
00522 

Generated on Thu Jul 28 12:15:04 2005 for libmrss by  doxygen 1.4.3-20050530