• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

kget

  • sources
  • kde-4.12
  • kdenetwork
  • kget
  • ui
  • metalinkcreator
metalinker.h
Go to the documentation of this file.
1 /***************************************************************************
2 * Copyright (C) 2009 Matthias Fuchs <mat69@gmx.net> *
3 * Copyright (C) 2012 Aish Raj Dahal <dahalaishraj@gmail.com> *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
19 ***************************************************************************/
20 
21 
22 #ifndef Metalinker_H
23 #define Metalinker_H
24 
25 #include <KIO/Job>
26 #include <KUrl>
27 #include <QDate>
28 #include <QDomElement>
29 #include <QtCore/QEventLoop>
30 #include <QtCore/QString>
31 #include <QtCore/QObject>
32 
33 #ifdef HAVE_NEPOMUK
34 namespace Nepomuk2
35 {
36  class Variant;
37 }
38 #endif //HAVE_NEPOMUK
39 
47 namespace KGetMetalink
48 {
49 
50 class DateConstruct
51 {
52  public:
53  DateConstruct()
54  : negativeOffset(false)
55  {
56  }
57 
58  void setData(const QDateTime &dateTime, const QTime &timeZoneOffset = QTime(), bool negativeOffset = false);
59  void setData(const QString &dateConstruct);
60 
61  void clear();
62 
63  bool isNull() const;
64  bool isValid() const;
65 
66  QString toString() const;
67 
68  QDateTime dateTime;
69  QTime timeZoneOffset;
70  bool negativeOffset;
71 };
72 
76 class UrlText
77 {
78  public:
79  UrlText() {};
80 
81  bool isEmpty() const {return name.isEmpty() && url.isEmpty();}
82 
83  void clear();
84 
85  QString name;
86  KUrl url;
87 };
88 
93 class CommonData
94 {
95  public:
96  CommonData() {}
97 
98  void load(const QDomElement &e);
99  void save(QDomElement &e) const;
100 
101  void clear();
102 
103 #ifdef HAVE_NEPOMUK
104 
107  QList<QPair<QUrl, Nepomuk2::Variant> > properties() const;
108 #endif //HAVE_NEPOMUK
109 
110  QString identity;
111  QString version;
112  QString description;
113  QStringList oses;
114  KUrl logo;
115  QStringList languages;
116  UrlText publisher;
117  QString copyright;
118 };
119 
120 class Metaurl
121 {
122  public:
123  Metaurl()
124  : priority(0)
125  {
126  }
127 
131  bool operator<(const Metaurl &other) const;
132 
133  void load(const QDomElement &e);
134  void save(QDomElement &e) const;
135 
136  bool isValid();
137 
138  void clear();
139 
140  QString type;
141 
146  uint priority;
147 
151  QString name;
152 
153  KUrl url;
154 };
155 
156 class Url
157 {
158  public:
159  Url()
160  : priority(0)
161  {
162  }
163 
167  bool operator<(const Url &other) const;
168 
169  void load(const QDomElement &e);
170  void save(QDomElement &e) const;
171 
172  bool isValid();
173 
174  void clear();
175 
180  uint priority;
181 
185  QString location;
186 
187  KUrl url;
188 };
189 
190 class Resources
191 {
192  public:
193  Resources() {}
194 
195  bool isValid() const {return !urls.isEmpty() || !metaurls.isEmpty();}
196 
197  void load(const QDomElement &e);
198  void save(QDomElement &e) const;
199 
200  void clear();
201 
202  QList<Url> urls;
203  QList<Metaurl> metaurls;
204 };
205 
206 class Pieces
207 {
208  public:
209  Pieces()
210  : length(0)
211  {
212  }
213 
214  void load(const QDomElement &e);
215  void save(QDomElement &e) const;
216 
217  void clear();
218 
219  QString type;
220  KIO::filesize_t length;
221  QStringList hashes;
222 };
223 
224 class Verification
225 {
226  public:
227  Verification() {}
228 
229  void load(const QDomElement &e);
230  void save(QDomElement &e) const;
231 
232  void clear();
233 
234  QHash<QString, QString> hashes;
235  QList<Pieces> pieces;
236  QHash<QString, QString> signatures;
237 };
238 
239 class File
240 {
241  public:
242  File()
243  : size(0)
244  {
245  }
246 
247  void load(const QDomElement &e);
248  void save(QDomElement &e) const;
249 
250  void clear();
251 
252  bool isValid() const;
253 
259  bool isValidNameAttribute() const;
260 
261 #ifdef HAVE_NEPOMUK
262 
265  QList<QPair<QUrl, Nepomuk2::Variant> > properties() const;
266 #endif //HAVE_NEPOMUK
267 
268  QString name;
269  Verification verification;
270  KIO::filesize_t size;
271  CommonData data;
272  Resources resources;
273 };
274 
275 class Files
276 {
277  public:
278  Files() {}
279 
280  bool isValid() const;
281 
282  void load(const QDomElement &e);
283  void save(QDomElement &e) const;
284 
285 // #ifdef HAVE_NEPOMUK//TODO wha this now?
286 // /**
287 // * Return all Nepomuk-properties that can be extracted of Files
288 // * @Note only Files is being looked at, not each File it contains, so
289 // * you only get the general metadata for all Files
290 // */
291 // QHash<QUrl, Nepomuk::Variant> properties() const;
292 // #endif //HAVE_NEPOMUK
293 
294  void clear();
295 
296  QList<File> files;
297 };
298 
299 class Metalink
300 {
301  public:
302  Metalink()
303  : dynamic(false)
304  {
305  }
306 
311  bool isValid() const;
312 
313  void load(const QDomElement &e);
314 
319  QDomDocument save() const;
320 
321  void clear();
322 
323  bool dynamic;
324  QString xmlns; //the xmlns value is ignored when saving, instead the data format described in the specification is always used
325  DateConstruct published; //when the metalink was published
326  KUrl origin;
327  QString generator;
328  DateConstruct updated; //when the metalink was updated
329  Files files;
330 
331  static const QString KGET_DESCRIPTION;
332  static const uint MAX_URL_PRIORITY; //maximum pirority a Metalink 4.0 Url or Metaurl can have, not to be mixed up with the highest priority
333 };
334 
340 class Metalink_v3
341 {
342  public:
343  Metalink_v3();
344 
345  Metalink metalink();
346  void setMetalink(const Metalink &metalink);
347 
348  void load(const QDomElement &e);
349 
354  QDomDocument save() const;
355 
356  private:
357  void parseFiles(const QDomElement &e);
358  Resources parseResources(const QDomElement &e);
359  DateConstruct parseDateConstruct(const QString &data);
360  CommonData parseCommonData(const QDomElement &e);
361 
366  void inheritCommonData(const CommonData &ancestor, CommonData *inheritor);
367 
368  void saveFiles(QDomElement &e) const;
369  void saveResources(const Resources &resources, QDomElement &e) const;
370  void saveVerification(const Verification &verification, QDomElement &e) const;
371  void saveCommonData(const CommonData &data, QDomElement &e) const;
372  QString dateConstructToString(const DateConstruct &date) const;
373 
374  private:
375  Metalink m_metalink;
376  static const uint MAX_PREFERENCE;
377 };
378 
382 class HandleMetalink
383 {
384  public:
391  static bool load(const KUrl &destination, Metalink *metalink);
392 
399  static bool load(const QByteArray &data, Metalink *metalink);
400 
408  static bool save(const KUrl &destination, Metalink *metalink);
409 
410 #ifdef HAVE_NEPOMUK
411 
414  static void addProperty(QList<QPair<QUrl, Nepomuk2::Variant> > *data, const QByteArray &uriBa, const QString &value);
415  static void addProperty(QList<QPair<QUrl, Nepomuk2::Variant> > *data, const QUrl &uri, const QString &value);
416 #endif //HAVE_NEPOMUK
417 };
418 
419 class MetalinkHttpParser : public QObject
420 {
421  Q_OBJECT
422  public:
423  MetalinkHttpParser(const KUrl& Url)
424  : m_Url(Url), m_MetalinkHSatus(false) , m_EtagValue(QString(""))
425  {
426  checkMetalinkHttp();
427  }
428 
429  ~MetalinkHttpParser();
430 
435  bool isMetalinkHttp();
436 
441  KUrl getUrl();
442  QMultiMap<QString, QString>* getHeaderInfo();
443 
448  QString* getEtag();
449 
450  private slots:
451  void slotHeaderResult(KJob* kjob);
452  void checkMetalinkHttp();
453  void detectMime(KIO::Job * job, const QString & type);
454  void slotRedirection(KIO::Job*, const KUrl&);
455 
456 
457  private:
458  KUrl m_Url;
459  KUrl m_redirectionUrl;
460  bool m_MetalinkHSatus;
461  QEventLoop m_loop;
462  QMultiMap<QString, QString> m_headerInfo;
463  QString m_EtagValue ;
464 
469  void parseHeaders(const QString&);
470 
474  void setMetalinkHSatus();
475 
476 };
477 
478 class HttpLinkHeader : public Metaurl
479 {
480  public:
481  HttpLinkHeader(const QString &headerLine);
482 
483  QString reltype;
484  bool pref;
485  int depth;
486  QString geo;
487 
492  void parseHeaderLine(const QString &);
493 
494  bool operator<(const HttpLinkHeader &) const;
495 };
496 
497 }
498 
499 #endif // Metalinker_H
KGetMetalink::Metaurl::isValid
bool isValid()
Definition: metalinker.cpp:340
KGetMetalink::Files::load
void load(const QDomElement &e)
Definition: metalinker.cpp:659
KGetMetalink::CommonData::publisher
UrlText publisher
Definition: metalinker.h:116
KGetMetalink::HandleMetalink::load
static bool load(const KUrl &destination, Metalink *metalink)
Loads destination into metalink.
Definition: metalinker.cpp:1232
KGetMetalink::Metaurl
Definition: metalinker.h:120
KGetMetalink::CommonData::languages
QStringList languages
Definition: metalinker.h:115
KGetMetalink::HttpLinkHeader::operator<
bool operator<(const HttpLinkHeader &) const
Definition: metalinker.cpp:1472
KGetMetalink::UrlText
This class contains a url and the name, it can be used to e.g.
Definition: metalinker.h:76
KGetMetalink::Metalink::dynamic
bool dynamic
Definition: metalinker.h:323
KGetMetalink::Metaurl::name
QString name
Optional the name of a file that should be get of that metaurl.
Definition: metalinker.h:151
KGetMetalink::Metalink::origin
KUrl origin
Definition: metalinker.h:326
KGetMetalink::Url::clear
void clear()
Definition: metalinker.cpp:400
KGetMetalink::MetalinkHttpParser
Definition: metalinker.h:419
KGetMetalink::File::resources
Resources resources
Definition: metalinker.h:272
KGetMetalink::DateConstruct::setData
void setData(const QDateTime &dateTime, const QTime &timeZoneOffset=QTime(), bool negativeOffset=false)
Definition: metalinker.cpp:75
KGetMetalink::CommonData::logo
KUrl logo
Definition: metalinker.h:114
KGetMetalink::DateConstruct::negativeOffset
bool negativeOffset
Definition: metalinker.h:70
KGetMetalink::Metalink::KGET_DESCRIPTION
static const QString KGET_DESCRIPTION
Definition: metalinker.h:331
KGetMetalink::Pieces::Pieces
Pieces()
Definition: metalinker.h:209
KGetMetalink::File::File
File()
Definition: metalinker.h:242
KGetMetalink::Url::load
void load(const QDomElement &e)
Definition: metalinker.cpp:366
KGetMetalink::CommonData::CommonData
CommonData()
Definition: metalinker.h:96
KGetMetalink::Metalink::published
DateConstruct published
Definition: metalinker.h:325
KGetMetalink::Metaurl::url
KUrl url
Definition: metalinker.h:153
KGetMetalink::CommonData::save
void save(QDomElement &e) const
Definition: metalinker.cpp:177
KGetMetalink::MetalinkHttpParser::getEtag
QString * getEtag()
Definition: metalinker.cpp:1345
KGetMetalink::MetalinkHttpParser::getHeaderInfo
QMultiMap< QString, QString > * getHeaderInfo()
Definition: metalinker.cpp:1461
KGetMetalink::Url
Definition: metalinker.h:156
KGetMetalink::Resources::save
void save(QDomElement &e) const
Definition: metalinker.cpp:430
KGetMetalink::HttpLinkHeader::reltype
QString reltype
Definition: metalinker.h:483
KGetMetalink::HttpLinkHeader::HttpLinkHeader
HttpLinkHeader(const QString &headerLine)
Definition: metalinker.cpp:1466
KGetMetalink::File::save
void save(QDomElement &e) const
Definition: metalinker.cpp:571
KGetMetalink::Verification::signatures
QHash< QString, QString > signatures
Definition: metalinker.h:236
KGetMetalink::Files::Files
Files()
Definition: metalinker.h:278
KGetMetalink::Url::operator<
bool operator<(const Url &other) const
"smaller" urls are less important than larger, larger urls should be preffered
Definition: metalinker.cpp:353
QObject
KGetMetalink::Files::files
QList< File > files
Definition: metalinker.h:296
KGetMetalink::CommonData::identity
QString identity
Definition: metalinker.h:110
KGetMetalink::Verification::load
void load(const QDomElement &e)
Definition: metalinker.cpp:488
KGetMetalink::HttpLinkHeader::geo
QString geo
Definition: metalinker.h:486
KGetMetalink::HttpLinkHeader::pref
bool pref
Definition: metalinker.h:484
KGetMetalink::Metalink_v3::load
void load(const QDomElement &e)
Definition: metalinker.cpp:790
KGetMetalink::Pieces::load
void load(const QDomElement &e)
Definition: metalinker.cpp:449
KGetMetalink::File
Definition: metalinker.h:239
KGetMetalink::UrlText::url
KUrl url
Definition: metalinker.h:86
KGetMetalink::UrlText::clear
void clear()
Definition: metalinker.cpp:150
KGetMetalink::Metalink_v3::setMetalink
void setMetalink(const Metalink &metalink)
Definition: metalinker.cpp:785
KGetMetalink::Verification::save
void save(QDomElement &e) const
Definition: metalinker.cpp:517
KGetMetalink::Url::priority
uint priority
the priority of the urls, 1 is highest priority, 999999 lowest default is 0 as in not set and thus is...
Definition: metalinker.h:180
KGetMetalink::Pieces::save
void save(QDomElement &e) const
Definition: metalinker.cpp:463
KGetMetalink::File::load
void load(const QDomElement &e)
Definition: metalinker.cpp:560
KGetMetalink::File::isValidNameAttribute
bool isValidNameAttribute() const
Controls if the name attribute is valid, i.e.
Definition: metalinker.cpp:605
KGetMetalink::CommonData::load
void load(const QDomElement &e)
Definition: metalinker.cpp:156
KGetMetalink::Metalink::xmlns
QString xmlns
Definition: metalinker.h:324
KGetMetalink::DateConstruct::isNull
bool isNull() const
Definition: metalinker.cpp:112
KGetMetalink::Metalink::save
QDomDocument save() const
Save the metalink.
Definition: metalinker.cpp:722
KGetMetalink::Url::location
QString location
the location of the server eg.
Definition: metalinker.h:185
KGetMetalink::Resources::clear
void clear()
Definition: metalinker.cpp:443
KGetMetalink::Pieces::hashes
QStringList hashes
Definition: metalinker.h:221
KGetMetalink::Metalink::updated
DateConstruct updated
Definition: metalinker.h:328
KGetMetalink::UrlText::isEmpty
bool isEmpty() const
Definition: metalinker.h:81
KGetMetalink::CommonData::clear
void clear()
Definition: metalinker.cpp:240
KGetMetalink::HandleMetalink::save
static bool save(const KUrl &destination, Metalink *metalink)
Saves metalink to destination.
Definition: metalinker.cpp:1296
KGetMetalink::Resources::isValid
bool isValid() const
Definition: metalinker.h:195
KGetMetalink::Files::clear
void clear()
Return all Nepomuk-properties that can be extracted of Files only Files is being looked at...
Definition: metalinker.cpp:682
KGetMetalink::File::clear
void clear()
Definition: metalinker.cpp:595
KGetMetalink::Metalink::Metalink
Metalink()
Definition: metalinker.h:302
KGetMetalink::Verification::clear
void clear()
Definition: metalinker.cpp:549
KGetMetalink::Metaurl::type
QString type
Definition: metalinker.h:140
KGetMetalink::Resources::load
void load(const QDomElement &e)
Definition: metalinker.cpp:407
KGetMetalink::Resources::metaurls
QList< Metaurl > metaurls
Definition: metalinker.h:203
KGetMetalink::Metaurl::operator<
bool operator<(const Metaurl &other) const
"smaller" urls are less important than larger, larger urls should be preffered
Definition: metalinker.cpp:304
KGetMetalink::Url::isValid
bool isValid()
Definition: metalinker.cpp:395
KGetMetalink::Metalink
Definition: metalinker.h:299
KGetMetalink::Verification::Verification
Verification()
Definition: metalinker.h:227
KGetMetalink::Resources::urls
QList< Url > urls
Definition: metalinker.h:202
KGetMetalink::Metaurl::save
void save(QDomElement &e) const
Definition: metalinker.cpp:320
KGetMetalink::Pieces::clear
void clear()
Definition: metalinker.cpp:481
KGetMetalink::HttpLinkHeader::parseHeaderLine
void parseHeaderLine(const QString &)
Loads information from a header value into metalink header structure.
Definition: metalinker.cpp:1477
KGetMetalink::Url::url
KUrl url
Definition: metalinker.h:187
KGetMetalink::Metalink_v3::save
QDomDocument save() const
Save the metalink.
Definition: metalinker.cpp:1032
KGetMetalink::Metalink::MAX_URL_PRIORITY
static const uint MAX_URL_PRIORITY
Definition: metalinker.h:332
KGetMetalink::CommonData
Files, File and Metadata contain this Metadata not as member and only for compatibility.
Definition: metalinker.h:93
KGetMetalink::Files
Definition: metalinker.h:275
KGetMetalink::Metaurl::priority
uint priority
the priority of the urls, 1 is highest priority, 999999 lowest default is 0 as in not set and thus is...
Definition: metalinker.h:146
KGetMetalink::MetalinkHttpParser::isMetalinkHttp
bool isMetalinkHttp()
Definition: metalinker.cpp:1399
KGetMetalink::Metalink::clear
void clear()
Definition: metalinker.cpp:765
KGetMetalink::Pieces::type
QString type
Definition: metalinker.h:219
KGetMetalink::Metalink::files
Files files
Definition: metalinker.h:329
KGetMetalink::Url::save
void save(QDomElement &e) const
Definition: metalinker.cpp:376
KGetMetalink::CommonData::copyright
QString copyright
Definition: metalinker.h:117
KGetMetalink::CommonData::oses
QStringList oses
Definition: metalinker.h:113
KGetMetalink::DateConstruct::toString
QString toString() const
Definition: metalinker.cpp:122
KGetMetalink::Pieces
Definition: metalinker.h:206
KGetMetalink::HttpLinkHeader::depth
int depth
Definition: metalinker.h:485
KGetMetalink::MetalinkHttpParser::~MetalinkHttpParser
~MetalinkHttpParser()
Definition: metalinker.cpp:1340
KGetMetalink::File::name
QString name
Definition: metalinker.h:268
KGetMetalink::CommonData::version
QString version
Definition: metalinker.h:111
KGetMetalink::Verification::hashes
QHash< QString, QString > hashes
Definition: metalinker.h:234
KGetMetalink::DateConstruct::clear
void clear()
Definition: metalinker.cpp:144
KGetMetalink::Files::save
void save(QDomElement &e) const
Definition: metalinker.cpp:669
KGetMetalink::Metalink_v3::metalink
Metalink metalink()
Definition: metalinker.cpp:780
KGetMetalink::Metalink::isValid
bool isValid() const
checks if the minimum requirements of a metalink are met
Definition: metalinker.cpp:687
KGetMetalink::HttpLinkHeader
Definition: metalinker.h:478
KGetMetalink::DateConstruct::isValid
bool isValid() const
Definition: metalinker.cpp:117
KGetMetalink::Metalink_v3
Metalink version 3.0 2nd ed Used only for loading and saving, uses itself Metalink internally...
Definition: metalinker.h:340
KGetMetalink::DateConstruct
Definition: metalinker.h:50
KGetMetalink::MetalinkHttpParser::getUrl
KUrl getUrl()
Definition: metalinker.cpp:1456
KGetMetalink::DateConstruct::dateTime
QDateTime dateTime
Definition: metalinker.h:68
KGetMetalink::Resources::Resources
Resources()
Definition: metalinker.h:193
KGetMetalink::Resources
Definition: metalinker.h:190
KGetMetalink::File::verification
Verification verification
Definition: metalinker.h:269
KGetMetalink::Verification::pieces
QList< Pieces > pieces
Definition: metalinker.h:235
KGetMetalink::CommonData::description
QString description
Definition: metalinker.h:112
KGetMetalink::UrlText::name
QString name
Definition: metalinker.h:85
KGetMetalink::Metaurl::load
void load(const QDomElement &e)
Definition: metalinker.cpp:309
KGetMetalink::Files::isValid
bool isValid() const
Definition: metalinker.cpp:633
KGetMetalink::Metalink::generator
QString generator
Definition: metalinker.h:327
KGetMetalink::File::isValid
bool isValid() const
Definition: metalinker.cpp:555
KGetMetalink::Pieces::length
KIO::filesize_t length
Definition: metalinker.h:220
KGetMetalink::Metaurl::Metaurl
Metaurl()
Definition: metalinker.h:123
KGetMetalink::Metaurl::clear
void clear()
Definition: metalinker.cpp:345
KGetMetalink::Metalink_v3::Metalink_v3
Metalink_v3()
Definition: metalinker.cpp:776
KGetMetalink::DateConstruct::timeZoneOffset
QTime timeZoneOffset
Definition: metalinker.h:69
KGetMetalink::HandleMetalink
This class can handle the loading and saving of metalinks on the filesystem.
Definition: metalinker.h:382
KGetMetalink::Metalink::load
void load(const QDomElement &e)
Definition: metalinker.cpp:699
KGetMetalink::Verification
Definition: metalinker.h:224
KJob
KGetMetalink::File::size
KIO::filesize_t size
Definition: metalinker.h:270
KGetMetalink::MetalinkHttpParser::MetalinkHttpParser
MetalinkHttpParser(const KUrl &Url)
Definition: metalinker.h:423
KGetMetalink::Url::Url
Url()
Definition: metalinker.h:159
KGetMetalink::UrlText::UrlText
UrlText()
Definition: metalinker.h:79
KGetMetalink::DateConstruct::DateConstruct
DateConstruct()
Definition: metalinker.h:53
KGetMetalink::File::data
CommonData data
Definition: metalinker.h:271
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:53:17 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kget

Skip menu "kget"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal