/****************************************************************************** * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN */ #include "search.h" #include "converters.h" #include using namespace QMatrixClient; static const auto basePath = QStringLiteral("/_matrix/client/r0"); namespace QMatrixClient { // Converters QJsonObject toJson(const SearchJob::IncludeEventContext& pod) { QJsonObject _json; addToJson(_json, "before_limit", pod.beforeLimit); addToJson(_json, "after_limit", pod.afterLimit); addToJson(_json, "include_profile", pod.includeProfile); return _json; } QJsonObject toJson(const SearchJob::Group& pod) { QJsonObject _json; addToJson(_json, "key", pod.key); return _json; } QJsonObject toJson(const SearchJob::Groupings& pod) { QJsonObject _json; addToJson(_json, "group_by", pod.groupBy); return _json; } QJsonObject toJson(const SearchJob::RoomEventsCriteria& pod) { QJsonObject _json; addToJson<>(_json, "search_term", pod.searchTerm); addToJson(_json, "keys", pod.keys); addToJson(_json, "filter", pod.filter); addToJson(_json, "order_by", pod.orderBy); addToJson(_json, "event_context", pod.eventContext); addToJson(_json, "include_state", pod.includeState); addToJson(_json, "groupings", pod.groupings); return _json; } QJsonObject toJson(const SearchJob::Categories& pod) { QJsonObject _json; addToJson(_json, "room_events", pod.roomEvents); return _json; } template <> struct FromJson { SearchJob::UserProfile operator()(const QJsonValue& jv) { const auto& _json = jv.toObject(); SearchJob::UserProfile result; result.displayname = fromJson(_json.value("displayname")); result.avatarUrl = fromJson(_json.value("avatar_url")); return result; } }; template <> struct FromJson { SearchJob::EventContext operator()(const QJsonValue& jv) { const auto& _json = jv.toObject(); SearchJob::EventContext result; result.begin = fromJson(_json.value("start")); result.end = fromJson(_json.value("end")); result.profileInfo = fromJson>(_json.value("profile_info")); result.eventsBefore = fromJson(_json.value("events_before")); result.eventsAfter = fromJson(_json.value("events_after")); return result; } }; template <> struct FromJson { SearchJob::Result operator()(const QJsonValue& jv) { const auto& _json = jv.toObject(); SearchJob::Result result; result.rank = fromJson(_json.value("rank")); result.result = fromJson(_json.value("result")); result.context = fromJson(_json.value("context")); return result; } }; template <> struct FromJson { SearchJob::GroupValue operator()(const QJsonValue& jv) { const auto& _json = jv.toObject(); SearchJob::GroupValue result; result.nextBatch = fromJson(_json.value("next_batch")); result.order = fromJson(_json.value("order")); result.results = fromJson(_json.value("results")); return result; } }; template <> struct FromJson { SearchJob::ResultRoomEvents operator()(const QJsonValue& jv) { const auto& _json = jv.toObject(); SearchJob::ResultRoomEvents result; result.count = fromJson(_json.value("count")); result.results = fromJson>(_json.value("results")); result.state = fromJson>(_json.value("state")); result.groups = fromJson>>(_json.value("groups")); result.nextBatch = fromJson(_json.value("next_batch")); return result; } }; template <> struct FromJson { SearchJob::ResultCategories operator()(const QJsonValue& jv) { const auto& _json = jv.toObject(); SearchJob::ResultCategories result; result.roomEvents = fromJson(_json.value("room_events")); return result; } }; } // namespace QMatrixClient class SearchJob::Private { public: ResultCategories searchCategories; }; BaseJob::Query queryToSearch(const QString& nextBatch) { BaseJob::Query _q; if (!nextBatch.isEmpty()) _q.addQueryItem("next_batch", nextBatch); return _q; } SearchJob::SearchJob(const Categories& searchCategories, const QString& nextBatch) : BaseJob(HttpVerb::Post, "SearchJob", basePath % "/search", queryToSearch(nextBatch)) , d(new Private) { QJsonObject _data; addToJson<>(_data, "search_categories", searchCategories); setRequestData(_data); } SearchJob::~SearchJob() = default; const SearchJob::ResultCategories& SearchJob::searchCategories() const { return d->searchCategories; } BaseJob::Status SearchJob::parseJson(const QJsonDocument& data) { auto json = data.object(); if (!json.contains("search_categories")) return { JsonParseError, "The key 'search_categories' not found in the response" }; d->searchCategories = fromJson(json.value("search_categories")); return Success; }