repoindex/network/aurquery.h

72 lines
1.7 KiB
C
Raw Normal View History

2015-08-10 22:46:01 +02:00
#ifndef ALPM_AURQUERY_H
#define ALPM_AURQUERY_H
#include "alpm/package.h"
#include <QUrl>
#include <QObject>
#include <vector>
QT_FORWARD_DECLARE_CLASS(QNetworkAccessManager)
QT_FORWARD_DECLARE_CLASS(QNetworkReply)
2015-08-10 22:46:01 +02:00
namespace PackageManagement {
class AurQuery : public QObject
{
Q_OBJECT
public:
AurQuery(QNetworkAccessManager &networkAccessManager, QObject *parent = nullptr);
static const QUrl aurRpcUrl();
static void setAurRpcUrl(const QUrl &aurRpcUrl);
QNetworkReply *requestSuggestions(const QString &phrase) const;
QNetworkReply *requestPackageInfo(const QStringList &packageNames, bool forceUpdate = false) const;
QNetworkReply *requestFullPackageInfo(const QString &package, bool forceUpdate = false) const;
const std::map<QString, AurPackage> &packages() const;
2015-08-10 22:46:01 +02:00
std::map<QString, AurPackage> &packages();
signals:
void suggestionsAvailable(const QNetworkReply *reply, const QJsonArray &suggestions);
void packageInfoAvailable(const QNetworkReply *reply);
2015-08-10 22:46:01 +02:00
private slots:
void dataReceived();
2015-08-10 22:46:01 +02:00
private:
void processPackageInfo(const QNetworkReply *reply, const QJsonArray &results);
2015-08-10 22:46:01 +02:00
QNetworkAccessManager &m_networkAccessManager;
std::map<QString, AurPackage> m_packages;
static QUrl m_aurRpcUrl;
static QUrl m_aurPkgbuildUrl;
2015-08-10 22:46:01 +02:00
};
inline const QUrl AurQuery::aurRpcUrl()
2015-08-10 22:46:01 +02:00
{
return m_aurRpcUrl;
2015-08-10 22:46:01 +02:00
}
inline void AurQuery::setAurRpcUrl(const QUrl &aur4Url)
2015-08-10 22:46:01 +02:00
{
m_aurRpcUrl = aur4Url;
2015-08-10 22:46:01 +02:00
}
inline const std::map<QString, AurPackage> &AurQuery::packages() const
{
return m_packages;
}
2015-08-10 22:46:01 +02:00
inline std::map<QString, AurPackage> &AurQuery::packages()
{
return m_packages;
}
} // namespace Alpm
#endif // ALPM_AURQUERY_H