aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/account-data.h
blob: 1c7b555bdadecd23f0fbd3e25a2a34d9e765b5d9 (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/******************************************************************************
 * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
 */

#pragma once

#include "jobs/basejob.h"

namespace Quotient {

/*! \brief Set some account_data for the user.
 *
 * Set some account_data for the client. This config is only visible to the user
 * that set the account_data. The config will be synced to clients in the
 * top-level ``account_data``.
 */
class SetAccountDataJob : public BaseJob {
public:
    /*! \brief Set some account_data for the user.
     *
     *
     * \param userId
     *   The ID of the user to set account_data for. The access token must be
     *   authorized to make requests for this user ID.
     *
     * \param type
     *   The event type of the account_data to set. Custom types should be
     *   namespaced to avoid clashes.
     *
     * \param content
     *   The content of the account_data
     */
    explicit SetAccountDataJob(const QString& userId, const QString& type,
                               const QJsonObject& content = {});
};

/*! \brief Get some account_data for the user.
 *
 * Get some account_data for the client. This config is only visible to the user
 * that set the account_data.
 */
class GetAccountDataJob : public BaseJob {
public:
    /*! \brief Get some account_data for the user.
     *
     *
     * \param userId
     *   The ID of the user to get account_data for. The access token must be
     *   authorized to make requests for this user ID.
     *
     * \param type
     *   The event type of the account_data to get. Custom types should be
     *   namespaced to avoid clashes.
     */
    explicit GetAccountDataJob(const QString& userId, const QString& type);

    /*! \brief Construct a URL without creating a full-fledged job object
     *
     * This function can be used when a URL for GetAccountDataJob
     * is necessary but the job itself isn't.
     */
    static QUrl makeRequestUrl(QUrl baseUrl, const QString& userId,
                               const QString& type);
};

/*! \brief Set some account_data for the user.
 *
 * Set some account_data for the client on a given room. This config is only
 * visible to the user that set the account_data. The config will be synced to
 * clients in the per-room ``account_data``.
 */
class SetAccountDataPerRoomJob : public BaseJob {
public:
    /*! \brief Set some account_data for the user.
     *
     *
     * \param userId
     *   The ID of the user to set account_data for. The access token must be
     *   authorized to make requests for this user ID.
     *
     * \param roomId
     *   The ID of the room to set account_data on.
     *
     * \param type
     *   The event type of the account_data to set. Custom types should be
     *   namespaced to avoid clashes.
     *
     * \param content
     *   The content of the account_data
     */
    explicit SetAccountDataPerRoomJob(const QString& userId,
                                      const QString& roomId, const QString& type,
                                      const QJsonObject& content = {});
};

/*! \brief Get some account_data for the user.
 *
 * Get some account_data for the client on a given room. This config is only
 * visible to the user that set the account_data.
 */
class GetAccountDataPerRoomJob : public BaseJob {
public:
    /*! \brief Get some account_data for the user.
     *
     *
     * \param userId
     *   The ID of the user to set account_data for. The access token must be
     *   authorized to make requests for this user ID.
     *
     * \param roomId
     *   The ID of the room to get account_data for.
     *
     * \param type
     *   The event type of the account_data to get. Custom types should be
     *   namespaced to avoid clashes.
     */
    explicit GetAccountDataPerRoomJob(const QString& userId,
                                      const QString& roomId,
                                      const QString& type);

    /*! \brief Construct a URL without creating a full-fledged job object
     *
     * This function can be used when a URL for GetAccountDataPerRoomJob
     * is necessary but the job itself isn't.
     */
    static QUrl makeRequestUrl(QUrl baseUrl, const QString& userId,
                               const QString& roomId, const QString& type);
};

} // namespace Quotient