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
17namespace Syndication
18{
19namespace RDF
20{
21SyndicationInfo::SyndicationInfo(ResourcePtr resource)
22 : ResourceWrapper(resource)
23{
24}
25
26SyndicationInfo::~SyndicationInfo()
27{
28}
29
30SyndicationInfo::Period SyndicationInfo::updatePeriod() const
31{
32 return stringToPeriod(str: resource()->property(property: SyndicationVocab::self()->updatePeriod())->asString());
33}
34
35int SyndicationInfo::updateFrequency() const
36{
37 QString freqStr = resource()->property(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: &ok);
45
46 if (ok) {
47 return freq;
48 } else {
49 return 1; // 1 is default
50 }
51}
52
53time_t SyndicationInfo::updateBase() const
54{
55 QString str = resource()->property(property: SyndicationVocab::self()->updateBase())->asString();
56
57 return parseDate(str, hint: ISODate);
58}
59
60QString SyndicationInfo::debugInfo() const
61{
62 QString info;
63 if (updatePeriod() != Daily) {
64 info += QStringLiteral("syn:updatePeriod: #%1#\n").arg(a: periodToString(period: updatePeriod()));
65 }
66 info += QStringLiteral("syn:updateFrequency: #%1#\n").arg(a: QString::number(updateFrequency()));
67
68 const QString dbase = dateTimeToString(date: updateBase());
69 if (!dbase.isNull()) {
70 info += QStringLiteral("syn:updateBase: #%1#\n").arg(a: dbase);
71 }
72
73 return info;
74}
75
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
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

source code of syndication/src/rdf/syndicationinfo.cpp