File indexing completed on 2024-10-06 03:44:29

0001 /*
0002     This file is part of the syndication library
0003     SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef SYNDICATION_ENCLOSURE_H
0009 #define SYNDICATION_ENCLOSURE_H
0010 
0011 #include "syndication_export.h"
0012 
0013 #include <QSharedPointer>
0014 #include <QString>
0015 
0016 namespace Syndication
0017 {
0018 class Enclosure;
0019 //@cond PRIVATE
0020 typedef QSharedPointer<Enclosure> EnclosurePtr;
0021 //@endcond
0022 
0023 /**
0024  * An enclosure describes a (media) file available on the net.
0025  *
0026  * Most of the time, enclosures are used for "podcasts", i.e. audio
0027  * files announced and distributed via syndication.
0028  *
0029  * @author Frank Osterfeld
0030  */
0031 class SYNDICATION_EXPORT Enclosure
0032 {
0033 public:
0034     /**
0035      * destructor
0036      */
0037     virtual ~Enclosure();
0038 
0039     /**
0040      * returns whether this enclosure is a null object.
0041      */
0042     virtual bool isNull() const = 0;
0043 
0044     /**
0045      * The URL of the linked resource (required).
0046      */
0047     virtual QString url() const = 0;
0048 
0049     /**
0050      * title of the enclosure. This is a human-readable description of the
0051      * linked file. If available, the title should be used in user interfaces
0052      * instead of the URL. If no title is set (e.g., RSS2 enclosures don't
0053      * have titles), use url() as fallback.
0054      *
0055      * @return title describing the enclosure, or a null string if not
0056      * specified.
0057      */
0058     virtual QString title() const = 0;
0059 
0060     /**
0061      * mimetype of the enclosure.
0062      * TODO: link mimetype specs
0063      *
0064      * Examples are @c "audio/mpeg" for MP3, or @c "application/pdf" for
0065      * PDF.
0066      *
0067      * @return the mimetype of the file, or a null string if not
0068      * specified
0069      */
0070     virtual QString type() const = 0;
0071 
0072     /**
0073      * returns the length of the linked file in bytes
0074      *
0075      * @return the length of the file in bytes, 0 if not specified
0076      */
0077     virtual uint length() const = 0;
0078 
0079     /**
0080      * for audio/video files, the duration of the file in seconds
0081      *
0082      * @return the duration of the file in seconds, or 0 if not specified
0083      */
0084     virtual uint duration() const = 0;
0085 
0086     /**
0087      * description of this enclosure for debugging purposes
0088      *
0089      * @return debug string
0090      */
0091     virtual QString debugInfo() const;
0092 };
0093 
0094 } // namespace Syndication
0095 
0096 #endif // SYNDICATION_ENCLOSURE_H