File indexing completed on 2024-10-13 12:20:36

0001 /*
0002     This file is part of the syndication library
0003     SPDX-FileCopyrightText: 2005 Frank Osterfeld <osterfeld@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef SYNDICATION_RSS2_CLOUD_H
0009 #define SYNDICATION_RSS2_CLOUD_H
0010 
0011 #include <syndication/elementwrapper.h>
0012 
0013 class QDomElement;
0014 class QString;
0015 
0016 namespace Syndication
0017 {
0018 namespace RSS2
0019 {
0020 /**
0021  * Cloud information for an RSS channel.
0022  * It specifies a web service that supports the rssCloud interface which can
0023  * be implemented in HTTP-POST, XML-RPC or SOAP 1.1.
0024  * Its purpose is to allow processes to register with a cloud to be notified
0025  * of updates to the channel,
0026  * implementing a lightweight publish-subscribe protocol for RSS feeds.
0027  *
0028  * Example:
0029  *
0030  * Domain="rpc.sys.com", port="80", path="/RPC2"
0031  * registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc"
0032  *
0033  * In this example, to request notification on the channel it appears in,
0034  * you would send an XML-RPC message to rpc.sys.com on port 80, with a path
0035  * of /RPC2. The procedure to call is myCloud.rssPleaseNotify.
0036  *
0037  * For more information on the rssCloud interface see
0038  * http://blogs.law.harvard.edu/tech/soapMeetsRss#rsscloudInterface
0039  *
0040  * (Note: This explanation was taken from
0041  * http://blogs.law.harvard.edu/tech/rss )
0042  *
0043  * @author Frank Osterfeld
0044  */
0045 class SYNDICATION_EXPORT Cloud : public ElementWrapper
0046 {
0047 public:
0048     /**
0049      * Default constructor, creates a null object, for which isNull()
0050      * is @p true.
0051      */
0052     Cloud();
0053 
0054     /**
0055      * Creates a Cloud object wrapping a @c &lt;cloud> XML element.
0056      *
0057      * @param element The @c &lt;cloud> element to wrap
0058      */
0059     explicit Cloud(const QDomElement &element);
0060 
0061     /**
0062      * the remote domain
0063      */
0064     QString domain() const;
0065 
0066     /**
0067      * the remote port to connect to
0068      */
0069     int port() const;
0070 
0071     /**
0072      * the remote path to connect to
0073      */
0074     QString path() const;
0075 
0076     /**
0077      * register procedure, e.g. "myCloud.rssPleaseNotify"
0078      */
0079     QString registerProcedure() const;
0080 
0081     /**
0082      * protocol used for publish-subscribe, e.g. "xml-rpc"
0083      */
0084     QString protocol() const;
0085 
0086     /**
0087      * Returns a description of the object for debugging purposes.
0088      *
0089      * @return debug string
0090      */
0091     QString debugInfo() const;
0092 };
0093 
0094 } // namespace RSS2
0095 } // namespace Syndication
0096 
0097 #endif // SYNDICATION_RSS2_CLOUD_H