aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/definitions/push_condition.h
blob: ce66d075dbc79920ffa50a065d5148ec099aafa3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 
/******************************************************************************
 * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
 */

#pragma once

#include "converters.h"

namespace Quotient {

struct PushCondition {
    /// The kind of condition to apply. See
    /// [conditions](/client-server-api/#conditions) for more information on the
    /// allowed kinds and how they work.
    QString kind;

    /// Required for `event_match` conditions. The dot-separated field of the
    /// event to match.
    ///
    /// Required for `sender_notification_permission` conditions. The field in
    /// the power level event the user needs a minimum power level for. Fields
    /// must be specified under the `notifications` property in the power level
    /// event's `content`.
    QString key;

    /// Required for `event_match` conditions. The glob-style pattern to
    /// match against. Patterns with no special glob characters should be
    /// treated as having asterisks prepended and appended when testing the
    /// condition.
    QString pattern;

    /// Required for `room_member_count` conditions. A decimal integer
    /// optionally prefixed by one of, ==, <, >, >= or <=. A prefix of < matches
    /// rooms where the member count is strictly less than the given number and
    /// so forth. If no prefix is present, this parameter defaults to ==.
    QString is;
};

template <>
struct JsonObjectConverter<PushCondition> {
    static void dumpTo(QJsonObject& jo, const PushCondition& pod)
    {
        addParam<>(jo, QStringLiteral("kind"), pod.kind);
        addParam<IfNotEmpty>(jo, QStringLiteral("key"), pod.key);
        addParam<IfNotEmpty>(jo, QStringLiteral("pattern"), pod.pattern);
        addParam<IfNotEmpty>(jo, QStringLiteral("is"), pod.is);
    }
    static void fillFrom(const QJsonObject& jo, PushCondition& pod)
    {
        fromJson(jo.value("kind"_ls), pod.kind);
        fromJson(jo.value("key"_ls), pod.key);
        fromJson(jo.value("pattern"_ls), pod.pattern);
        fromJson(jo.value("is"_ls), pod.is);
    }
};

} // namespace Quotient