#ifndef HANDLERS_XDGURL_H
#define HANDLERS_XDGURL_H

#include <QObject>
#include <QJsonObject>

//class QNetworkReply;

namespace Core {
class Config;
class Network;
}

namespace Handlers {

class XdgUrl : public QObject
{
    Q_OBJECT

private:
    QString _xdgUrl;
    Core::Config *_appConfig;
    Core::Config *_userConfig;
    Core::Network *_asyncNetwork;

    QJsonObject _metadata;
    QJsonObject _destinations;
    QJsonObject _archiveTypes;

public:
    explicit XdgUrl(const QString &xdgUrl, Core::Config *appConfig, Core::Config *userConfig, Core::Network *asyncNetwork, QObject *parent = 0);

private:
    QJsonObject _parse();
    QString _convertPathString(const QString &path);
    QJsonObject _importDestinations();
    QJsonObject _importArchiveTypes();
    bool _installPlasmapkg(const QString &path, const QString &type = "plasmoid");
    bool _uncompressArchive(const QString &path, const QString &targetDir);
    bool _download();
    bool _install();

private slots:

public slots:
    QString getXdgUrl();
    QString getMetadata();
    bool isValid();
    bool process();

signals:
    void downloaded(const QString &metadata);
    void installed(const QString &metadata);

};

} // namespace Handlers

#endif // HANDLERS_XDGURL_H