diff --git a/src/handlers/xdgurl.cpp b/src/handlers/xdgurl.cpp index e5323b272a0131ce30861f5ce3193e631b53d2a2..db744f361f7e55940728dad41915806c4ccb0a6a 100644 --- a/src/handlers/xdgurl.cpp +++ b/src/handlers/xdgurl.cpp @@ -18,49 +18,63 @@ namespace Handlers { XdgUrl::XdgUrl(const QString &xdgUrl, Core::Config *config, Core::Network *network, QObject *parent) : QObject(parent), _xdgUrl(xdgUrl), _config(config), _network(network) { - _metadata = _parse(); - _destinations = _loadDestinations(); + _parse(); + _loadDestinations(); connect(_network, &Core::Network::finished, this, &XdgUrl::_downloaded); } -QJsonObject XdgUrl::_parse() +void XdgUrl::_parse() { QUrl url(_xdgUrl); QUrlQuery query(url); - QJsonObject metadata; - metadata["scheme"] = QString("xdg"); - metadata["command"] = QString("download"); - metadata["url"] = QString(""); - metadata["type"] = QString("downloads"); - metadata["filename"] = QString(""); + _metadata["scheme"] = QString("xdg"); + _metadata["command"] = QString("download"); + _metadata["url"] = QString(""); + _metadata["type"] = QString("downloads"); + _metadata["filename"] = QString(""); if (!url.scheme().isEmpty()) { - metadata["scheme"] = url.scheme(); + _metadata["scheme"] = url.scheme(); } if (!url.host().isEmpty()) { - metadata["command"] = url.host(); + _metadata["command"] = url.host(); } if (query.hasQueryItem("url") && !query.queryItemValue("url").isEmpty()) { - metadata["url"] = query.queryItemValue("url", QUrl::FullyDecoded); + _metadata["url"] = query.queryItemValue("url", QUrl::FullyDecoded); } if (query.hasQueryItem("type") && !query.queryItemValue("type").isEmpty()) { - metadata["type"] = query.queryItemValue("type", QUrl::FullyDecoded); + _metadata["type"] = query.queryItemValue("type", QUrl::FullyDecoded); } if (query.hasQueryItem("filename") && !query.queryItemValue("filename").isEmpty()) { - metadata["filename"] = QUrl(query.queryItemValue("filename", QUrl::FullyDecoded)).fileName(); + _metadata["filename"] = QUrl(query.queryItemValue("filename", QUrl::FullyDecoded)).fileName(); } - if (!metadata["url"].toString().isEmpty() && metadata["filename"].toString().isEmpty()) { - metadata["filename"] = QUrl(metadata["url"].toString()).fileName(); + if (!_metadata["url"].toString().isEmpty() && _metadata["filename"].toString().isEmpty()) { + _metadata["filename"] = QUrl(_metadata["url"].toString()).fileName(); } +} - return metadata; +void XdgUrl::_loadDestinations() +{ + QJsonObject configDestinations = _config->get("destinations"); + QJsonObject configDestinationsAlias = _config->get("destinations_alias"); + + foreach (const QString key, configDestinations.keys()) { + _destinations[key] = _convertPathString(configDestinations[key].toString()); + } + + foreach (const QString key, configDestinationsAlias.keys()) { + QString value = configDestinationsAlias[key].toString(); + if (_destinations.contains(value)) { + _destinations[key] = _destinations.value(value); + } + } } QString XdgUrl::_convertPathString(const QString &path) @@ -80,26 +94,6 @@ QString XdgUrl::_convertPathString(const QString &path) return newPath; } -QJsonObject XdgUrl::_loadDestinations() -{ - QJsonObject destinations; - QJsonObject configDestinations = _config->get("destinations"); - QJsonObject configDestinationsAlias = _config->get("destinations_alias"); - - foreach (const QString key, configDestinations.keys()) { - destinations[key] = _convertPathString(configDestinations[key].toString()); - } - - foreach (const QString key, configDestinationsAlias.keys()) { - QString value = configDestinationsAlias[key].toString(); - if (destinations.contains(value)) { - destinations[key] = destinations.value(value); - } - } - - return destinations; -} - void XdgUrl::_saveDownloadedFile(QNetworkReply *reply) { QJsonObject result; diff --git a/src/handlers/xdgurl.h b/src/handlers/xdgurl.h index e4f07934469614cae6532bae428153c1075ab7a6..e0478e0675964dbf63850ea342c022c904241aa2 100644 --- a/src/handlers/xdgurl.h +++ b/src/handlers/xdgurl.h @@ -29,9 +29,9 @@ public: explicit XdgUrl(const QString &xdgUrl, Core::Config *config, Core::Network *network, QObject *parent = 0); private: - QJsonObject _parse(); + void _parse(); + void _loadDestinations(); QString _convertPathString(const QString &path); - QJsonObject _loadDestinations(); void _saveDownloadedFile(QNetworkReply *reply); void _installDownloadedFile(QNetworkReply *reply);