/* * document.h * * Copyright (c) 2001, 2002, 2003 Frerich Raabe * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. For licensing and distribution details, check the * accompanying file 'COPYING'. */ #ifndef LIBRSS_DOCUMENT_H #define LIBRSS_DOCUMENT_H #include "article.h" #include "global.h" class TQDateTime; class TQDomDocument; namespace RSS { class Image; class TextInput; /** * Represents a RSS document and provides all the features and properties * as stored in it. You usually don't need to instantiate this one yourself * but rather use Loader::loadFrom() to produce a Document object. * @see Loader::loadForm() */ class Document { public: /** * Default constructor. */ Document(); /** * Copy constructor. * @param other The Document object to copy. */ Document(const Document &other); /** * Constructs a Document from a piece of XML markup. */ Document(const TQDomDocument &doc); /** * Assignment operator. * @param other The Document object to clone. * @return A reference to the cloned Document object. */ Document &operator=(const Document &other); /** * Destructor. */ ~Document(); /** * @return If document is valid */ bool isValid() const; /** * @return The version of this document (one of the values of the * enum RSS::Version). This value can be used to determine which * features this RSS document provides. * @see verbVersion() */ Version version() const; /** * Convenience method. Differs from version() only in how the result * is returned. * @return A TQString representing the verbose version of the * document. * @see version() */ TQString verbVersion() const; /** * RSS 0.90 and upwards * @return The title of the RSS document, or TQString() if no * title was available. This is often the name of the news source * from which the RSS document was retrieved. */ TQString title() const; /** * RSS 0.90 and upwards * @return The description of the RSS document, or TQString() * if no description was available. This is usually a short slogan * or description of the news source from which the RSS document * was retrieved. */ TQString description() const; /** * RSS 0.90 and upwards * @return A link pointing to some website, or an empty KURL if no * link was available. This URL mostly points to the homepage of * the news site from which the RSS document was retrieved. * Note that the RSS 0.91 Specification dictates that URLs not * starting with "http://" or "ftp://" are considered invalid. */ const KURL &link() const; /** * RSS 0.90 and upwards * @return An Image object as stored in the RSS document, or a * null pointer if there was no image available. * @see Image */ Image *image(); /** * A version of the method above, with stricter const-ness. */ const Image *image() const; /** * RSS 0.90 and upwards * @return A TextInput object as stored in the RSS document, or a * null pointer if there was no text input available. * @see TextInput */ TextInput *textInput(); /** * A version of the method above, with stricter const-ness. */ const TextInput *textInput() const; /** * RSS 0.90 and upwards * @return A list of Article objects as stored in the RSS document, * or a null pointer if there were no articles available. Every RSS * DTD requires that there is at least one article defined, so a * null pointer indicates an invalid RSS file! * @see Article */ const Article::List &articles() const; /** * RSS 0.91 and upwards * @return The language used in the RSS document (for the article * headlines etc.). This was originally introduced to assist with * determining the correct page encoding but acts as a solely * optional information in this library since you don't have to care * about the encoding as Unicode is used in the whole library. * @see RSS::Language */ Language language() const; /** * RSS 0.91 and upwards * @return A copyright of the information contained in the RSS * document, or TQString() if no copyright is available. */ TQString copyright() const; /** * RSS 0.91 and upwards * @return The date when the RSS document was published. */ const TQDateTime &pubDate() const; /** * RSS 0.91 and upwards. * @return The last time the channel was modified. */ const TQDateTime &lastBuildDate() const; /** * RSS 0.91 and upwards * @return A PICS * rating for this page. */ TQString rating() const; /** * RSS 0.91 and upwards * @return This tag should contain either a URL that references a * description of the channel, or a pointer to the documentation * for the format used in the RSS file. */ const KURL &docs() const; /** * RSS 0.91 and upwards * @return The email address of the managing editor of the site, * the person to contact for editorial inquiries. The suggested * format for email addresses in RSS documents is * bull@mancuso.com (Bull Mancuso). * @see webMaster() */ TQString managingEditor() const; /** * RSS 0.91 and upwards * @return The email address of the webmaster for the site, the * person to contact if there are technical problems with the * channel, or TQString() if this information isn't available. * @see managingEditor() */ TQString webMaster() const; /** * RSS 0.91 and upwards * @return A list of hours indicating the hours in the day, GMT, * when the channel is unlikely to be updated. If this item is * omitted, the channel is assumed to be updated hourly. Each * hour should be an integer value between 0 and 23. * @see skipDays() */ const HourList &skipHours() const; /** * RSS 0.91 and upwards * @return A list of s of the week, in English, indicating * the days of the week when the RSS document will not be updated. * @see skipHours(), DayList, Day */ const DayList &skipDays() const; int ttl() const; private: struct Private; Private *d; }; } #endif // LIBRSS_DOCUMENT_H