diff options
-rw-r--r-- | lib/converters.h | 6 | ||||
-rw-r--r-- | lib/csapi/third_party_lookup.cpp | 8 | ||||
-rw-r--r-- | lib/csapi/third_party_lookup.h | 5 |
3 files changed, 13 insertions, 6 deletions
diff --git a/lib/converters.h b/lib/converters.h index 1a8f3cfa..1e828393 100644 --- a/lib/converters.h +++ b/lib/converters.h @@ -331,6 +331,12 @@ namespace QMatrixClient q.addQueryItem(k, v); } + inline void addTo(QUrlQuery& q, const QString&, const QJsonObject& vals) + { + for (auto it = vals.begin(); it != vals.end(); ++it) + q.addQueryItem(it.key(), it.value().toString()); + } + // This one is for types that don't have isEmpty() template <typename ValT, bool Force = true, typename = bool> struct AddNode diff --git a/lib/csapi/third_party_lookup.cpp b/lib/csapi/third_party_lookup.cpp index 4396738c..45ccb7c3 100644 --- a/lib/csapi/third_party_lookup.cpp +++ b/lib/csapi/third_party_lookup.cpp @@ -142,14 +142,14 @@ class QueryUserByProtocolJob::Private QVector<ThirdPartyUser> data; }; -BaseJob::Query queryToQueryUserByProtocol(const QString& fields) +BaseJob::Query queryToQueryUserByProtocol(const QJsonObject& fields) { BaseJob::Query _q; - addParam<IfNotEmpty>(_q, QStringLiteral("fields..."), fields); + addParam<IfNotEmpty>(_q, QStringLiteral("fields"), fields); return _q; } -QUrl QueryUserByProtocolJob::makeRequestUrl(QUrl baseUrl, const QString& protocol, const QString& fields) +QUrl QueryUserByProtocolJob::makeRequestUrl(QUrl baseUrl, const QString& protocol, const QJsonObject& fields) { return BaseJob::makeRequestUrl(std::move(baseUrl), basePath % "/thirdparty/user/" % protocol, @@ -158,7 +158,7 @@ QUrl QueryUserByProtocolJob::makeRequestUrl(QUrl baseUrl, const QString& protoco static const auto QueryUserByProtocolJobName = QStringLiteral("QueryUserByProtocolJob"); -QueryUserByProtocolJob::QueryUserByProtocolJob(const QString& protocol, const QString& fields) +QueryUserByProtocolJob::QueryUserByProtocolJob(const QString& protocol, const QJsonObject& fields) : BaseJob(HttpVerb::Get, QueryUserByProtocolJobName, basePath % "/thirdparty/user/" % protocol, queryToQueryUserByProtocol(fields), diff --git a/lib/csapi/third_party_lookup.h b/lib/csapi/third_party_lookup.h index 03d607a8..a431b87a 100644 --- a/lib/csapi/third_party_lookup.h +++ b/lib/csapi/third_party_lookup.h @@ -7,6 +7,7 @@ #include "jobs/basejob.h" #include "csapi/../application-service/definitions/user.h" +#include <QtCore/QJsonObject> #include "csapi/../application-service/definitions/location.h" #include <QtCore/QHash> #include <QtCore/QVector> @@ -143,7 +144,7 @@ namespace QMatrixClient * \param fields * One or more custom fields that are passed to the AS to help identify the user. */ - explicit QueryUserByProtocolJob(const QString& protocol, const QString& fields = {}); + explicit QueryUserByProtocolJob(const QString& protocol, const QJsonObject& fields = {}); /*! Construct a URL without creating a full-fledged job object * @@ -151,7 +152,7 @@ namespace QMatrixClient * QueryUserByProtocolJob is necessary but the job * itself isn't. */ - static QUrl makeRequestUrl(QUrl baseUrl, const QString& protocol, const QString& fields = {}); + static QUrl makeRequestUrl(QUrl baseUrl, const QString& protocol, const QJsonObject& fields = {}); ~QueryUserByProtocolJob() override; |