libQuotient
A Qt library for building matrix clients
Loading...
Searching...
No Matches
pusher.h
Go to the documentation of this file.
1
// THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
2
3
#
pragma
once
4
5
#
include
<
Quotient
/
jobs
/
basejob
.
h
>
6
7
namespace
Quotient
{
8
9
//! \brief Gets the current pushers for the authenticated user
10
//!
11
//! Gets all currently active pushers for the authenticated user.
12
class
QUOTIENT_API
GetPushersJob
:
public
BaseJob
{
13
public
:
14
// Inner data structures
15
16
//! A dictionary of information for the pusher implementation
17
//! itself.
18
struct
QUOTIENT_API
PusherData
{
19
//! Required if `kind` is `http`. The URL to use to send
20
//! notifications to.
21
QUrl
url
{};
22
23
//! The format to use when sending notifications to the Push
24
//! Gateway.
25
QString
format
{};
26
};
27
28
struct
QUOTIENT_API
Pusher
{
29
//! This is a unique identifier for this pusher. See `/set` for
30
//! more detail.
31
//! Max length, 512 bytes.
32
QString
pushkey
;
33
34
//! The kind of pusher. `"http"` is a pusher that
35
//! sends HTTP pokes.
36
QString
kind
;
37
38
//! This is a reverse-DNS style identifier for the application.
39
//! Max length, 64 chars.
40
QString
appId
;
41
42
//! A string that will allow the user to identify what application
43
//! owns this pusher.
44
QString
appDisplayName
;
45
46
//! A string that will allow the user to identify what device owns
47
//! this pusher.
48
QString
deviceDisplayName
;
49
50
//! The preferred language for receiving notifications (e.g. 'en'
51
//! or 'en-US')
52
QString
lang
;
53
54
//! A dictionary of information for the pusher implementation
55
//! itself.
56
PusherData
data
;
57
58
//! This string determines which set of device specific rules this
59
//! pusher executes.
60
QString
profileTag
{};
61
};
62
63
// Construction/destruction
64
65
explicit
GetPushersJob
();
66
67
//! \brief Construct a URL without creating a full-fledged job object
68
//!
69
//! This function can be used when a URL for GetPushersJob
70
//! is necessary but the job itself isn't.
71
static
QUrl
makeRequestUrl
(
const
HomeserverData
&
hsData
);
72
73
// Result properties
74
75
//! An array containing the current pushers for the user
76
QVector
<
Pusher
>
pushers
()
const
{
return
loadFromJson
<
QVector
<
Pusher
>>(
"pushers"_L1
); }
77
};
78
79
inline
auto
collectResponse
(
const
GetPushersJob* job) {
return
job->pushers(); }
80
81
template
<>
82
struct
QUOTIENT_API
JsonObjectConverter
<
GetPushersJob
::
PusherData
> {
83
static
void
fillFrom
(
const
QJsonObject
&
jo
,
GetPushersJob
::
PusherData
&
result
)
84
{
85
fillFromJson
(
jo
.
value
(
"url"_L1
),
result
.
url
);
86
fillFromJson
(
jo
.
value
(
"format"_L1
),
result
.
format
);
87
}
88
};
89
90
template
<>
91
struct
QUOTIENT_API
JsonObjectConverter
<
GetPushersJob
::
Pusher
> {
92
static
void
fillFrom
(
const
QJsonObject
&
jo
,
GetPushersJob
::
Pusher
&
result
)
93
{
94
fillFromJson
(
jo
.
value
(
"pushkey"_L1
),
result
.
pushkey
);
95
fillFromJson
(
jo
.
value
(
"kind"_L1
),
result
.
kind
);
96
fillFromJson
(
jo
.
value
(
"app_id"_L1
),
result
.
appId
);
97
fillFromJson
(
jo
.
value
(
"app_display_name"_L1
),
result
.
appDisplayName
);
98
fillFromJson
(
jo
.
value
(
"device_display_name"_L1
),
result
.
deviceDisplayName
);
99
fillFromJson
(
jo
.
value
(
"lang"_L1
),
result
.
lang
);
100
fillFromJson
(
jo
.
value
(
"data"_L1
),
result
.
data
);
101
fillFromJson
(
jo
.
value
(
"profile_tag"_L1
),
result
.
profileTag
);
102
}
103
};
104
105
//! \brief Modify a pusher for this user on the homeserver.
106
//!
107
//! This endpoint allows the creation, modification and deletion of
108
//! [pushers](/client-server-api/#push-notifications) for this user ID. The behaviour of this
109
//! endpoint varies depending on the values in the JSON body.
110
//!
111
//! If `kind` is not `null`, the pusher with this `app_id` and `pushkey`
112
//! for this user is updated, or it is created if it doesn't exist. If
113
//! `kind` is `null`, the pusher with this `app_id` and `pushkey` for this
114
//! user is deleted.
115
class
QUOTIENT_API
PostPusherJob
:
public
BaseJob
{
116
public
:
117
// Inner data structures
118
119
//! Required if `kind` is not `null`. A dictionary of information
120
//! for the pusher implementation itself. If `kind` is `http`,
121
//! this should contain `url` which is the URL to use to send
122
//! notifications to.
123
struct
QUOTIENT_API
PusherData
{
124
//! Required if `kind` is `http`. The URL to use to send
125
//! notifications to. MUST be an HTTPS URL with a path of
126
//! `/_matrix/push/v1/notify`.
127
QUrl
url
{};
128
129
//! The format to send notifications in to Push Gateways if the
130
//! `kind` is `http`. The details about what fields the
131
//! homeserver should send to the push gateway are defined in the
132
//! [Push Gateway Specification](/push-gateway-api/). Currently the only format
133
//! available is 'event_id_only'.
134
QString
format
{};
135
};
136
137
// Construction/destruction
138
139
//! \param pushkey
140
//! This is a unique identifier for this pusher. The value you
141
//! should use for this is the routing or destination address
142
//! information for the notification, for example, the APNS token
143
//! for APNS or the Registration ID for GCM. If your notification
144
//! client has no such concept, use any unique identifier.
145
//! Max length, 512 bytes.
146
//!
147
//! If the `kind` is `"email"`, this is the email address to
148
//! send notifications to.
149
//!
150
//! \param kind
151
//! The kind of pusher to configure. `"http"` makes a pusher that
152
//! sends HTTP pokes. `"email"` makes a pusher that emails the
153
//! user with unread notifications. `null` deletes the pusher.
154
//!
155
//! \param appId
156
//! This is a reverse-DNS style identifier for the application.
157
//! It is recommended that this end with the platform, such that
158
//! different platform versions get different app identifiers.
159
//! Max length, 64 chars.
160
//!
161
//! If the `kind` is `"email"`, this is `"m.email"`.
162
//!
163
//! \param appDisplayName
164
//! Required if `kind` is not `null`. A string that will allow the
165
//! user to identify what application owns this pusher.
166
//!
167
//! \param deviceDisplayName
168
//! Required if `kind` is not `null`. A string that will allow the
169
//! user to identify what device owns this pusher.
170
//!
171
//! \param profileTag
172
//! This string determines which set of device specific rules this
173
//! pusher executes.
174
//!
175
//! \param lang
176
//! Required if `kind` is not `null`. The preferred language for
177
//! receiving notifications (e.g. 'en' or 'en-US').
178
//!
179
//! \param data
180
//! Required if `kind` is not `null`. A dictionary of information
181
//! for the pusher implementation itself. If `kind` is `http`,
182
//! this should contain `url` which is the URL to use to send
183
//! notifications to.
184
//!
185
//! \param append
186
//! If true, the homeserver should add another pusher with the
187
//! given pushkey and App ID in addition to any others with
188
//! different user IDs. Otherwise, the homeserver must remove any
189
//! other pushers with the same App ID and pushkey for different
190
//! users. The default is `false`.
191
explicit
PostPusherJob
(
const
QString
&
pushkey
,
const
QString
&
kind
,
const
QString
&
appId
,
192
const
QString
&
appDisplayName
= {},
const
QString
&
deviceDisplayName
= {},
193
const
QString
&
profileTag
= {},
const
QString
&
lang
= {},
194
const
std
::
optional
<
PusherData
>&
data
=
std
::
nullopt
,
195
std
::
optional
<
bool
>
append
=
std
::
nullopt
);
196
};
197
198
template
<>
199
struct
QUOTIENT_API
JsonObjectConverter
<
PostPusherJob
::
PusherData
> {
200
static
void
dumpTo
(
QJsonObject
&
jo
,
const
PostPusherJob
::
PusherData
&
pod
)
201
{
202
addParam
<
IfNotEmpty
>(
jo
,
"url"_L1
,
pod
.
url
);
203
addParam
<
IfNotEmpty
>(
jo
,
"format"_L1
,
pod
.
format
);
204
}
205
};
206
207
}
// namespace Quotient
Quotient::GetPushersJob
Gets the current pushers for the authenticated user.
Definition
pusher.h:12
Quotient::PostPusherJob
Modify a pusher for this user on the homeserver.
Definition
pusher.h:115
Quotient
Definition
accountregistry.h:13
Quotient::collectResponse
auto collectResponse(const GetAccountDataJob *job)
Definition
account-data.h:59
QUOTIENT_API
#define QUOTIENT_API
Definition
quotient_export.h:22
Quotient
csapi
pusher.h
Generated by
1.9.8