#ifndef ALPM_USER_REPOSITORY_H #define ALPM_USER_REPOSITORY_H #include "./alpm/package.h" #include "./alpm/repository.h" #include #include #include #include QT_FORWARD_DECLARE_CLASS(QNetworkReply) namespace RepoIndex { class UserRepository; class AurPackageReply : public PackageReply { Q_OBJECT public: AurPackageReply(QNetworkReply *networkReply, const QStringList &requestedPackages, UserRepository *userRepo); private slots: void processData(QNetworkReply *reply); private: UserRepository *m_userRepo; }; class AurFullPackageReply : public PackageReply { Q_OBJECT public: AurFullPackageReply(const QList &networkReplies, const QStringList &requestedPackages, UserRepository *userRepo); private slots: void processData(QNetworkReply *reply); private: UserRepository *m_userRepo; }; class AurSuggestionsReply : public SuggestionsReply { Q_OBJECT public: AurSuggestionsReply(QNetworkReply *networkReply, const QString &term, UserRepository *repo); private slots: void processData(QNetworkReply *reply); }; class UserRepository : public Repository { Q_OBJECT public: UserRepository(QObject *parent = nullptr); RepositoryType type() const; static const QUrl aurRpcUrl(); static void setAurRpcUrl(const QUrl &aurRpcUrl); PackageDetailAvailability requestsRequired(PackageDetail packageDetail) const; AurSuggestionsReply *requestSuggestions(const QString &term); AurPackageReply *requestPackageInfo(const QStringList &packageNames, bool forceUpdate = false); AurFullPackageReply *requestFullPackageInfo(const QStringList &packageNames, bool forceUpdate = false); protected: std::unique_ptr emptyPackage(); private: QSet m_requestedSuggestions; static QString m_aurBaseUrl; static QUrl m_aurRpcUrl; static QUrl m_aurPkgbuildUrl; static QUrl m_aurSrcInfoUrl; static QString m_aurSnapshotPath; }; 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