aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/pusher.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/pusher.h')
-rw-r--r--lib/csapi/pusher.h301
1 files changed, 152 insertions, 149 deletions
diff --git a/lib/csapi/pusher.h b/lib/csapi/pusher.h
index da3303fe..a909b9a0 100644
--- a/lib/csapi/pusher.h
+++ b/lib/csapi/pusher.h
@@ -4,166 +4,169 @@
#pragma once
+#include "converters.h"
+
#include "jobs/basejob.h"
#include <QtCore/QVector>
-#include "converters.h"
namespace QMatrixClient
{
- // Operations
- /// Gets the current pushers for the authenticated user
- ///
+// Operations
+
+/// Gets the current pushers for the authenticated user
+/*!
+ * Gets all currently active pushers for the authenticated user.
+ */
+class GetPushersJob : public BaseJob
+{
+public:
+ // Inner data structures
+
+ /// A dictionary of information for the pusher implementationitself.
+ struct PusherData
+ {
+ /// Required if ``kind`` is ``http``. The URL to use to
+ /// sendnotifications to.
+ QString url;
+ /// The format to use when sending notifications to the PushGateway.
+ QString format;
+ };
+
/// Gets all currently active pushers for the authenticated user.
- class GetPushersJob : public BaseJob
+ struct Pusher
{
- public:
- // Inner data structures
-
- /// A dictionary of information for the pusher implementation
- /// itself.
- struct PusherData
- {
- /// Required if ``kind`` is ``http``. The URL to use to send
- /// notifications to.
- QString url;
- /// The format to use when sending notifications to the Push
- /// Gateway.
- QString format;
- };
-
- /// Gets all currently active pushers for the authenticated user.
- struct Pusher
- {
- /// This is a unique identifier for this pusher. See ``/set`` for
- /// more detail.
- /// Max length, 512 bytes.
- QString pushkey;
- /// The kind of pusher. ``"http"`` is a pusher that
- /// sends HTTP pokes.
- QString kind;
- /// This is a reverse-DNS style identifier for the application.
- /// Max length, 64 chars.
- QString appId;
- /// A string that will allow the user to identify what application
- /// owns this pusher.
- QString appDisplayName;
- /// A string that will allow the user to identify what device owns
- /// this pusher.
- QString deviceDisplayName;
- /// This string determines which set of device specific rules this
- /// pusher executes.
- QString profileTag;
- /// The preferred language for receiving notifications (e.g. 'en'
- /// or 'en-US')
- QString lang;
- /// A dictionary of information for the pusher implementation
- /// itself.
- PusherData data;
- };
-
- // Construction/destruction
-
- explicit GetPushersJob();
-
- /*! Construct a URL without creating a full-fledged job object
- *
- * This function can be used when a URL for
- * GetPushersJob is necessary but the job
- * itself isn't.
- */
- static QUrl makeRequestUrl(QUrl baseUrl);
-
- ~GetPushersJob() override;
-
- // Result properties
-
- /// An array containing the current pushers for the user
- const QVector<Pusher>& pushers() const;
-
- protected:
- Status parseJson(const QJsonDocument& data) override;
-
- private:
- class Private;
- QScopedPointer<Private> d;
+ /// This is a unique identifier for this pusher. See ``/set`` formore
+ /// detail.Max length, 512 bytes.
+ QString pushkey;
+ /// The kind of pusher. ``"http"`` is a pusher thatsends HTTP pokes.
+ QString kind;
+ /// This is a reverse-DNS style identifier for the application.Max
+ /// length, 64 chars.
+ QString appId;
+ /// A string that will allow the user to identify what applicationowns
+ /// this pusher.
+ QString appDisplayName;
+ /// A string that will allow the user to identify what device ownsthis
+ /// pusher.
+ QString deviceDisplayName;
+ /// This string determines which set of device specific rules thispusher
+ /// executes.
+ QString profileTag;
+ /// The preferred language for receiving notifications (e.g. 'en'or
+ /// 'en-US')
+ QString lang;
+ /// A dictionary of information for the pusher implementationitself.
+ PusherData data;
};
- /// Modify a pusher for this user on the homeserver.
- ///
- /// This endpoint allows the creation, modification and deletion of `pushers`_
- /// for this user ID. The behaviour of this endpoint varies depending on the
- /// values in the JSON body.
- class PostPusherJob : public BaseJob
+ // Construction/destruction
+
+ explicit GetPushersJob();
+
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetPushersJob is necessary but the job
+ * itself isn't.
+ */
+ static QUrl makeRequestUrl(QUrl baseUrl);
+
+ ~GetPushersJob() override;
+
+ // Result properties
+
+ /// An array containing the current pushers for the user
+ const QVector<Pusher>& pushers() const;
+
+protected:
+ Status parseJson(const QJsonDocument& data) override;
+
+private:
+ class Private;
+ QScopedPointer<Private> d;
+};
+
+/// Modify a pusher for this user on the homeserver.
+/*!
+ * This endpoint allows the creation, modification and deletion of `pushers`_
+ * for this user ID. The behaviour of this endpoint varies depending on the
+ * values in the JSON body.
+ */
+class PostPusherJob : public BaseJob
+{
+public:
+ // Inner data structures
+
+ /// A dictionary of information for the pusher implementationitself. If
+ /// ``kind`` is ``http``, this should contain ``url``which is the URL to use
+ /// to send notifications to.
+ struct PusherData
{
- public:
- // Inner data structures
-
- /// A dictionary of information for the pusher implementation
- /// itself. If ``kind`` is ``http``, this should contain ``url``
- /// which is the URL to use to send notifications to.
- struct PusherData
- {
- /// Required if ``kind`` is ``http``. The URL to use to send
- /// notifications to. MUST be an HTTPS URL with a path of
- /// ``/_matrix/push/v1/notify``.
- QString url;
- /// The format to send notifications in to Push Gateways if the
- /// ``kind`` is ``http``. The details about what fields the
- /// homeserver should send to the push gateway are defined in the
- /// `Push Gateway Specification`_. Currently the only format
- /// available is 'event_id_only'.
- QString format;
- };
-
- // Construction/destruction
-
- /*! Modify a pusher for this user on the homeserver.
- * \param pushkey
- * This is a unique identifier for this pusher. The value you
- * should use for this is the routing or destination address
- * information for the notification, for example, the APNS token
- * for APNS or the Registration ID for GCM. If your notification
- * client has no such concept, use any unique identifier.
- * Max length, 512 bytes.
- *
- * If the ``kind`` is ``"email"``, this is the email address to
- * send notifications to.
- * \param kind
- * The kind of pusher to configure. ``"http"`` makes a pusher that
- * sends HTTP pokes. ``"email"`` makes a pusher that emails the
- * user with unread notifications. ``null`` deletes the pusher.
- * \param appId
- * This is a reverse-DNS style identifier for the application.
- * It is recommended that this end with the platform, such that
- * different platform versions get different app identifiers.
- * Max length, 64 chars.
- *
- * If the ``kind`` is ``"email"``, this is ``"m.email"``.
- * \param appDisplayName
- * A string that will allow the user to identify what application
- * owns this pusher.
- * \param deviceDisplayName
- * A string that will allow the user to identify what device owns
- * this pusher.
- * \param lang
- * The preferred language for receiving notifications (e.g. 'en'
- * or 'en-US').
- * \param data
- * A dictionary of information for the pusher implementation
- * itself. If ``kind`` is ``http``, this should contain ``url``
- * which is the URL to use to send notifications to.
- * \param profileTag
- * This string determines which set of device specific rules this
- * pusher executes.
- * \param append
- * If true, the homeserver should add another pusher with the
- * given pushkey and App ID in addition to any others with
- * different user IDs. Otherwise, the homeserver must remove any
- * other pushers with the same App ID and pushkey for different
- * users. The default is ``false``.
- */
- explicit PostPusherJob(const QString& pushkey, const QString& kind, const QString& appId, const QString& appDisplayName, const QString& deviceDisplayName, const QString& lang, const PusherData& data, const QString& profileTag = {}, Omittable<bool> append = none);
+ /// Required if ``kind`` is ``http``. The URL to use to sendnotifications
+ /// to. MUST be an HTTPS URL with a path of ``/_matrix/push/v1/notify``.
+ QString url;
+ /// The format to send notifications in to Push Gateways if the``kind``
+ /// is ``http``. The details about what fields thehomeserver should send
+ /// to the push gateway are defined in the`Push Gateway Specification`_.
+ /// Currently the only formatavailable is 'event_id_only'.
+ QString format;
};
+
+ // Construction/destruction
+
+ /*! Modify a pusher for this user on the homeserver.
+ * \param pushkey
+ * This is a unique identifier for this pusher. The value you
+ * should use for this is the routing or destination address
+ * information for the notification, for example, the APNS token
+ * for APNS or the Registration ID for GCM. If your notification
+ * client has no such concept, use any unique identifier.
+ * Max length, 512 bytes.
+ *
+ * If the ``kind`` is ``"email"``, this is the email address to
+ * send notifications to.
+ * \param kind
+ * The kind of pusher to configure. ``"http"`` makes a pusher that
+ * sends HTTP pokes. ``"email"`` makes a pusher that emails the
+ * user with unread notifications. ``null`` deletes the pusher.
+ * \param appId
+ * This is a reverse-DNS style identifier for the application.
+ * It is recommended that this end with the platform, such that
+ * different platform versions get different app identifiers.
+ * Max length, 64 chars.
+ *
+ * If the ``kind`` is ``"email"``, this is ``"m.email"``.
+ * \param appDisplayName
+ * A string that will allow the user to identify what application
+ * owns this pusher.
+ * \param deviceDisplayName
+ * A string that will allow the user to identify what device owns
+ * this pusher.
+ * \param lang
+ * The preferred language for receiving notifications (e.g. 'en'
+ * or 'en-US').
+ * \param data
+ * A dictionary of information for the pusher implementation
+ * itself. If ``kind`` is ``http``, this should contain ``url``
+ * which is the URL to use to send notifications to.
+ * \param profileTag
+ * This string determines which set of device specific rules this
+ * pusher executes.
+ * \param append
+ * If true, the homeserver should add another pusher with the
+ * given pushkey and App ID in addition to any others with
+ * different user IDs. Otherwise, the homeserver must remove any
+ * other pushers with the same App ID and pushkey for different
+ * users. The default is ``false``.
+ */
+ explicit PostPusherJob(const QString& pushkey, const QString& kind,
+ const QString& appId, const QString& appDisplayName,
+ const QString& deviceDisplayName,
+ const QString& lang, const PusherData& data,
+ const QString& profileTag = {},
+ Omittable<bool> append = none);
+};
+
} // namespace QMatrixClient