File indexing completed on 2024-05-12 04:42:42

0001 /*
0002     SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "attribution.h"
0008 #include "datatypes_p.h"
0009 #include "json_p.h"
0010 
0011 #include <QString>
0012 #include <QUrl>
0013 
0014 using namespace KPublicTransport;
0015 
0016 namespace KPublicTransport {
0017 
0018 class AttributionPrivate : public QSharedData {
0019 public:
0020     QString name;
0021     QUrl url;
0022     QString license;
0023     QUrl licenseUrl;
0024 };
0025 }
0026 
0027 KPUBLICTRANSPORT_MAKE_GADGET(Attribution)
0028 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QString, name, setName)
0029 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QUrl, url, setUrl)
0030 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QString, license, setLicense)
0031 KPUBLICTRANSPORT_MAKE_PROPERTY(Attribution, QUrl, licenseUrl, setLicenseUrl)
0032 
0033 bool Attribution::isEmpty() const
0034 {
0035     return d->name.isEmpty() && d->license.isEmpty();
0036 }
0037 
0038 bool Attribution::hasLicense() const
0039 {
0040     return !d->license.isEmpty() || !d->licenseUrl.isEmpty();
0041 }
0042 
0043 std::vector<Attribution> Attribution::fromJson(const QJsonArray &a)
0044 {
0045     return Json::fromJson<Attribution>(a);
0046 }
0047 
0048 Attribution Attribution::fromJson(const QJsonObject &obj)
0049 {
0050     // read compatibility with github.com/public-transport/transport-apis
0051     if (obj.value(QLatin1String("isProprietary")).toBool() == true) {
0052         return {};
0053     }
0054 
0055     auto attr = Json::fromJson<Attribution>(obj);
0056     if (attr.url().isEmpty()) {
0057         attr.setUrl(QUrl(obj.value(QLatin1String("homepage")).toString()));
0058     }
0059 
0060     return attr;
0061 }
0062 
0063 QJsonArray Attribution::toJson(const std::vector<Attribution> &attrs)
0064 {
0065     return Json::toJson(attrs);
0066 }
0067 
0068 QJsonObject Attribution::toJson(const Attribution &attr)
0069 {
0070     return Json::toJson(attr);
0071 }
0072 
0073 #include "moc_attribution.cpp"