repoindex/network/userrepository.h

80 lines
1.8 KiB
C++

#ifndef ALPM_USER_REPOSITORY_H
#define ALPM_USER_REPOSITORY_H
#include "alpm/package.h"
#include "alpm/repository.h"
#include <QUrl>
#include <QObject>
#include <vector>
#include <memory>
QT_FORWARD_DECLARE_CLASS(QNetworkAccessManager)
QT_FORWARD_DECLARE_CLASS(QNetworkReply)
namespace PackageManagement {
class UserRepository;
class AurPackageReply : public PackageReply
{
Q_OBJECT
public:
AurPackageReply(QNetworkReply *networkReply, UserRepository *userRepo);
const std::map<QString, std::unique_ptr<Package> > &packages() const;
private slots:
void processData();
private:
UserRepository *m_userRepo;
};
class AurSuggestionsReply : public SuggestionsReply
{
Q_OBJECT
public:
AurSuggestionsReply(QNetworkReply *networkReply);
private slots:
void processData();
};
class UserRepository : public Repository
{
Q_OBJECT
public:
UserRepository(QNetworkAccessManager &networkAccessManager, QObject *parent = nullptr);
RepositoryType type() const;
static const QUrl aurRpcUrl();
static void setAurRpcUrl(const QUrl &aurRpcUrl);
bool requestsRequired() const;
AurSuggestionsReply *requestSuggestions(const QString &phrase) const;
AurPackageReply *requestPackageInfo(const QStringList &packageNames, bool forceUpdate = false) const;
AurPackageReply *requestFullPackageInfo(const QString &package, bool forceUpdate = false) const;
private:
QNetworkAccessManager &m_networkAccessManager;
static QUrl m_aurRpcUrl;
static QUrl m_aurPkgbuildUrl;
static QUrl m_aurSrcInfoUrl;
};
inline const QUrl UserRepository::aurRpcUrl()
{
return m_aurRpcUrl;
}
inline void UserRepository::setAurRpcUrl(const QUrl &aur4Url)
{
m_aurRpcUrl = aur4Url;
}
} // namespace Alpm
#endif // ALPM_USER_REPOSITORY_H