aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/definitions/push_rule.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/definitions/push_rule.h')
-rw-r--r--lib/csapi/definitions/push_rule.h77
1 files changed, 45 insertions, 32 deletions
diff --git a/lib/csapi/definitions/push_rule.h b/lib/csapi/definitions/push_rule.h
index 5f52876d..135537c1 100644
--- a/lib/csapi/definitions/push_rule.h
+++ b/lib/csapi/definitions/push_rule.h
@@ -7,39 +7,52 @@
#include "converters.h"
#include "csapi/definitions/push_condition.h"
-#include "converters.h"
-#include <QtCore/QVector>
-#include <QtCore/QVariant>
-#include <QtCore/QJsonObject>
-namespace QMatrixClient
-{
- // Data structures
+namespace Quotient {
+
+struct PushRule {
+ /// The actions to perform when this rule is matched.
+ QVector<QVariant> actions;
+
+ /// Whether this is a default rule, or has been set explicitly.
+ bool isDefault;
+
+ /// Whether the push rule is enabled or not.
+ bool enabled;
- struct PushRule
+ /// The ID of this rule.
+ QString ruleId;
+
+ /// The conditions that must hold true for an event in order for a rule to
+ /// be applied to an event. A rule with no conditions always matches. Only
+ /// applicable to `underride` and `override` rules.
+ QVector<PushCondition> conditions;
+
+ /// The glob-style pattern to match against. Only applicable to `content`
+ /// rules.
+ QString pattern;
+};
+
+template <>
+struct JsonObjectConverter<PushRule> {
+ static void dumpTo(QJsonObject& jo, const PushRule& pod)
{
- /// The actions to perform when this rule is matched.
- QVector<QVariant> actions;
- /// Whether this is a default rule, or has been set explicitly.
- bool isDefault;
- /// Whether the push rule is enabled or not.
- bool enabled;
- /// The ID of this rule.
- QString ruleId;
- /// The conditions that must hold true for an event in order for a rule to be
- /// applied to an event. A rule with no conditions always matches. Only
- /// applicable to ``underride`` and ``override`` rules.
- QVector<PushCondition> conditions;
- /// The glob-style pattern to match against. Only applicable to ``content``
- /// rules.
- QString pattern;
- };
-
- QJsonObject toJson(const PushRule& pod);
-
- template <> struct FromJsonObject<PushRule>
+ addParam<>(jo, QStringLiteral("actions"), pod.actions);
+ addParam<>(jo, QStringLiteral("default"), pod.isDefault);
+ addParam<>(jo, QStringLiteral("enabled"), pod.enabled);
+ addParam<>(jo, QStringLiteral("rule_id"), pod.ruleId);
+ addParam<IfNotEmpty>(jo, QStringLiteral("conditions"), pod.conditions);
+ addParam<IfNotEmpty>(jo, QStringLiteral("pattern"), pod.pattern);
+ }
+ static void fillFrom(const QJsonObject& jo, PushRule& pod)
{
- PushRule operator()(const QJsonObject& jo) const;
- };
-
-} // namespace QMatrixClient
+ fromJson(jo.value("actions"_ls), pod.actions);
+ fromJson(jo.value("default"_ls), pod.isDefault);
+ fromJson(jo.value("enabled"_ls), pod.enabled);
+ fromJson(jo.value("rule_id"_ls), pod.ruleId);
+ fromJson(jo.value("conditions"_ls), pod.conditions);
+ fromJson(jo.value("pattern"_ls), pod.pattern);
+ }
+};
+
+} // namespace Quotient