File indexing completed on 2024-05-12 16:25:39

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "downloadappslanguagesparser.h"
0008 #include "ruqola_debug.h"
0009 
0010 #include <QFileInfo>
0011 #include <QJsonArray>
0012 #include <QJsonDocument>
0013 #include <QJsonObject>
0014 
0015 DownloadAppsLanguagesParser::DownloadAppsLanguagesParser() = default;
0016 
0017 void DownloadAppsLanguagesParser::setFilename(const QString &filename)
0018 {
0019     mFileName = filename;
0020 }
0021 
0022 bool DownloadAppsLanguagesParser::parse()
0023 {
0024     if (mFileName.isEmpty()) {
0025         qCWarning(RUQOLA_LOG) << "Filename is empty. Parsing impossible";
0026         return false;
0027     }
0028     if (!QFileInfo::exists(mFileName)) {
0029         qCWarning(RUQOLA_LOG) << "Filename doesn't exist: " << mFileName;
0030         return false;
0031     }
0032     QFile file(mFileName);
0033     if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
0034         qCWarning(RUQOLA_LOG) << "Impossible to read: " << mFileName;
0035         return false;
0036     }
0037     const QByteArray content = file.readAll();
0038     file.close();
0039     const QJsonDocument doc = QJsonDocument::fromJson(content);
0040     const QJsonObject obj = doc.object();
0041     const QJsonArray array = obj.value(QLatin1String("apps")).toArray();
0042     for (int i = 0, total = array.size(); i < total; ++i) {
0043         DownloadAppsLanguagesInfo info;
0044         const QJsonObject languageJsonObject = array.at(i).toObject();
0045         const QString id = languageJsonObject[QLatin1String("id")].toString();
0046         if (info.parse(languageJsonObject, id)) {
0047             mMap.insert(id, info);
0048         }
0049     }
0050     return true;
0051 }
0052 
0053 QMap<QString, DownloadAppsLanguagesInfo> DownloadAppsLanguagesParser::map() const
0054 {
0055     return mMap;
0056 }