72 lines
1.7 KiB
C++
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
|