repoindex/network/aurquery.h

72 lines
1.7 KiB
C++

#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)
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;
std::map<QString, AurPackage> &packages();
signals:
void suggestionsAvailable(const QNetworkReply *reply, const QJsonArray &suggestions);
void packageInfoAvailable(const QNetworkReply *reply);
private slots:
void dataReceived();
private:
void processPackageInfo(const QNetworkReply *reply, const QJsonArray &results);
QNetworkAccessManager &m_networkAccessManager;
std::map<QString, AurPackage> m_packages;
static QUrl m_aurRpcUrl;
static QUrl m_aurPkgbuildUrl;
};
inline const QUrl AurQuery::aurRpcUrl()
{
return m_aurRpcUrl;
}
inline void AurQuery::setAurRpcUrl(const QUrl &aur4Url)
{
m_aurRpcUrl = aur4Url;
}
inline const std::map<QString, AurPackage> &AurQuery::packages() const
{
return m_packages;
}
inline std::map<QString, AurPackage> &AurQuery::packages()
{
return m_packages;
}
} // namespace Alpm
#endif // ALPM_AURQUERY_H