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 #include "syndicationinfo.h" 9 #include "property.h" 10 #include "statement.h" 11 #include "syndicationvocab.h" 12 13 #include <tools.h> 14 15 #include <QString> 16 17 namespace Syndication 18 { 19 namespace RDF 20 { SyndicationInfo(ResourcePtr resource)21SyndicationInfo::SyndicationInfo(ResourcePtr resource) 22 : ResourceWrapper(resource) 23 { 24 } 25 ~SyndicationInfo()26SyndicationInfo::~SyndicationInfo() 27 { 28 } 29 updatePeriod() const30SyndicationInfo::Period SyndicationInfo::updatePeriod() const 31 { 32 return stringToPeriod(resource()->property(SyndicationVocab::self()->updatePeriod())->asString()); 33 } 34 updateFrequency() const35int SyndicationInfo::updateFrequency() const 36 { 37 QString freqStr = resource()->property(SyndicationVocab::self()->updateFrequency())->asString(); 38 39 if (freqStr.isEmpty()) { 40 return 1; // 1 is default 41 } 42 43 bool ok = false; 44 int freq = freqStr.toInt(&ok); 45 46 if (ok) { 47 return freq; 48 } else { 49 return 1; // 1 is default 50 } 51 } 52 updateBase() const53time_t SyndicationInfo::updateBase() const 54 { 55 QString str = resource()->property(SyndicationVocab::self()->updateBase())->asString(); 56 57 return parseDate(str, ISODate); 58 } 59 debugInfo() const60QString SyndicationInfo::debugInfo() const 61 { 62 QString info; 63 if (updatePeriod() != Daily) { 64 info += QStringLiteral("syn:updatePeriod: #%1#\n").arg(periodToString(updatePeriod())); 65 } 66 info += QStringLiteral("syn:updateFrequency: #%1#\n").arg(QString::number(updateFrequency())); 67 68 const QString dbase = dateTimeToString(updateBase()); 69 if (!dbase.isNull()) { 70 info += QStringLiteral("syn:updateBase: #%1#\n").arg(dbase); 71 } 72 73 return info; 74 } 75 periodToString(Period period)76QString SyndicationInfo::periodToString(Period period) 77 { 78 switch (period) { 79 case Daily: 80 return QStringLiteral("daily"); 81 case Hourly: 82 return QStringLiteral("hourly"); 83 case Monthly: 84 return QStringLiteral("monthly"); 85 case Weekly: 86 return QStringLiteral("weekly"); 87 case Yearly: 88 return QStringLiteral("yearly"); 89 default: // should never happen 90 return QString(); 91 } 92 } 93 stringToPeriod(const QString & str)94SyndicationInfo::Period SyndicationInfo::stringToPeriod(const QString &str) 95 { 96 if (str.isEmpty()) { 97 return Daily; // default is "daily" 98 } 99 100 if (str == QLatin1String("hourly")) { 101 return Hourly; 102 } 103 if (str == QLatin1String("monthly")) { 104 return Monthly; 105 } 106 if (str == QLatin1String("weekly")) { 107 return Weekly; 108 } 109 if (str == QLatin1String("yearly")) { 110 return Yearly; 111 } 112 113 return Daily; // default is "daily" 114 } 115 116 } // namespace RDF 117 } // namespace Syndication 118