aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/profile.h
blob: 7f9c9e95ad55dfcd71a3766c56663c18f2ecbf6f (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
131
132
133
134
135
136
137
138
139
140
141
142
/******************************************************************************
 * THIS FILE IS GENERATED - ANY EDITS WILL BE OVERWRITTEN
 */

#pragma once

#include "jobs/basejob.h"

namespace Quotient {

/*! \brief Set the user's display name.
 *
 * This API sets the given user's display name. You must have permission to
 * set this user's display name, e.g. you need to have their `access_token`.
 */
class SetDisplayNameJob : public BaseJob {
public:
    /*! \brief Set the user's display name.
     *
     * \param userId
     *   The user whose display name to set.
     *
     * \param displayname
     *   The new display name for this user.
     */
    explicit SetDisplayNameJob(const QString& userId,
                               const QString& displayname);
};

/*! \brief Get the user's display name.
 *
 * Get the user's display name. This API may be used to fetch the user's
 * own displayname or to query the name of other users; either locally or
 * on remote homeservers.
 */
class GetDisplayNameJob : public BaseJob {
public:
    /*! \brief Get the user's display name.
     *
     * \param userId
     *   The user whose display name to get.
     */
    explicit GetDisplayNameJob(const QString& userId);

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

    // Result properties

    /// The user's display name if they have set one, otherwise not present.
    QString displayname() const
    {
        return loadFromJson<QString>("displayname"_ls);
    }
};

/*! \brief Set the user's avatar URL.
 *
 * This API sets the given user's avatar URL. You must have permission to
 * set this user's avatar URL, e.g. you need to have their `access_token`.
 */
class SetAvatarUrlJob : public BaseJob {
public:
    /*! \brief Set the user's avatar URL.
     *
     * \param userId
     *   The user whose avatar URL to set.
     *
     * \param avatarUrl
     *   The new avatar URL for this user.
     */
    explicit SetAvatarUrlJob(const QString& userId, const QUrl& avatarUrl);
};

/*! \brief Get the user's avatar URL.
 *
 * Get the user's avatar URL. This API may be used to fetch the user's
 * own avatar URL or to query the URL of other users; either locally or
 * on remote homeservers.
 */
class GetAvatarUrlJob : public BaseJob {
public:
    /*! \brief Get the user's avatar URL.
     *
     * \param userId
     *   The user whose avatar URL to get.
     */
    explicit GetAvatarUrlJob(const QString& userId);

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

    // Result properties

    /// The user's avatar URL if they have set one, otherwise not present.
    QUrl avatarUrl() const { return loadFromJson<QUrl>("avatar_url"_ls); }
};

/*! \brief Get this user's profile information.
 *
 * Get the combined profile information for this user. This API may be used
 * to fetch the user's own profile information or other users; either
 * locally or on remote homeservers. This API may return keys which are not
 * limited to `displayname` or `avatar_url`.
 */
class GetUserProfileJob : public BaseJob {
public:
    /*! \brief Get this user's profile information.
     *
     * \param userId
     *   The user whose profile information to get.
     */
    explicit GetUserProfileJob(const QString& userId);

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

    // Result properties

    /// The user's avatar URL if they have set one, otherwise not present.
    QUrl avatarUrl() const { return loadFromJson<QUrl>("avatar_url"_ls); }

    /// The user's display name if they have set one, otherwise not present.
    QString displayname() const
    {
        return loadFromJson<QString>("displayname"_ls);
    }
};

} // namespace Quotient
ct * * This function can be used when a URL for * GetUserProfileJob is necessary but the job * itself isn't. */ static QUrl makeRequestUrl(QUrl baseUrl, const QString& userId); ~GetUserProfileJob() override; // Result properties /// The user's avatar URL if they have set one, otherwise not present. const QString& avatarUrl() const; /// The user's display name if they have set one, otherwise not present. const QString& displayname() const; protected: Status parseJson(const QJsonDocument& data) override; private: class Private; QScopedPointer<Private> d; }; } // namespace QMatrixClient