1 | /* |
2 | This file is part of the syndication library |
3 | SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | |
8 | #ifndef SYNDICATION_ATOM_LINK_H |
9 | #define SYNDICATION_ATOM_LINK_H |
10 | |
11 | #include <syndication/elementwrapper.h> |
12 | |
13 | class QDomElement; |
14 | class QString; |
15 | |
16 | namespace Syndication |
17 | { |
18 | namespace Atom |
19 | { |
20 | /*! |
21 | * \class Syndication::Atom::Link |
22 | * \inmodule Syndication |
23 | * \inheaderfile Syndication/Atom/Link |
24 | * |
25 | * \brief A link, pointing to webpages, media files on the web ("podcast"), |
26 | * related content, etc. See rel() for details. |
27 | */ |
28 | class SYNDICATION_EXPORT Link : public Syndication::ElementWrapper |
29 | { |
30 | public: |
31 | /*! |
32 | * creates a null link object. |
33 | */ |
34 | Link(); |
35 | |
36 | /*! |
37 | * creates a Link object wrapping an atom:link element. |
38 | * |
39 | * \a element a DOM element, should be a atom:link element |
40 | * (although not enforced), otherwise this object will not parse |
41 | * anything useful |
42 | */ |
43 | explicit Link(const QDomElement &element); |
44 | |
45 | /*! |
46 | * URL of the referenced resource (required) |
47 | */ |
48 | Q_REQUIRED_RESULT QString href() const; |
49 | |
50 | /*! |
51 | * the relation between the feed/entry and the linked resource. |
52 | * |
53 | * The value of rel() is usually one of the following: |
54 | * |
55 | * \c "alternate": The URL points to an alternate version of the |
56 | * feed/entry. In practice, this is the article described in an entry, |
57 | * or the homepage of the feed. |
58 | * |
59 | * \c "enclosure": The link describes an Enclosure. See |
60 | * Syndication::Enclosure for more information. |
61 | * |
62 | * \c "related": links to web resources with related content. E.g., an |
63 | * article discussing KDE might link to the KDE homepage. |
64 | * |
65 | * \c "self": "identifies a resource equivalent to the containing |
66 | * element". This is usually the URL of the feed source itself. |
67 | * |
68 | * \c "via": The link points to the source of the information contained |
69 | * in the feed/entry |
70 | * |
71 | * Returns the rel value specified in the feed. Default value is |
72 | * \c "alternate" |
73 | */ |
74 | Q_REQUIRED_RESULT QString rel() const; |
75 | |
76 | /*! |
77 | * MIME type of the linked resource. (optional) |
78 | * |
79 | * Returns MIME type following (e.g., "text/html", "audio/mpeg"), |
80 | * or a null string if not set |
81 | */ |
82 | Q_REQUIRED_RESULT QString type() const; |
83 | |
84 | /*! |
85 | * the language of the linked resource. (optional) |
86 | * If used together with a rel() value of "alternate", it |
87 | * implies a translated version of the entry. |
88 | * |
89 | * Returns a language tag as defined in RFC 3066, |
90 | * or a null string if not specified |
91 | */ |
92 | Q_REQUIRED_RESULT QString hrefLanguage() const; |
93 | |
94 | /*! |
95 | * human-readable information about the link. (optional) |
96 | * |
97 | * Returns the link title as plain text ("<", "&" are text, not |
98 | * markup!), or a null string if not specified |
99 | */ |
100 | Q_REQUIRED_RESULT QString title() const; |
101 | |
102 | /*! |
103 | * size of the linked resource in bytes. (optional) |
104 | * |
105 | * Returns file size in bytes, or 0 if not specified |
106 | */ |
107 | Q_REQUIRED_RESULT uint length() const; |
108 | |
109 | /*! |
110 | * description of the link object for debugging purposes |
111 | * |
112 | * Returns debug string |
113 | */ |
114 | Q_REQUIRED_RESULT QString debugInfo() const; |
115 | }; |
116 | |
117 | } // namespace Atom |
118 | } // namespace Syndication |
119 | |
120 | #endif // SYNDICATION_ATOM_LINK_H |
121 | |