summary refs log tree commit diff
path: root/include/MatrixClient.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/MatrixClient.h')
-rw-r--r--include/MatrixClient.h210
1 files changed, 109 insertions, 101 deletions
diff --git a/include/MatrixClient.h b/include/MatrixClient.h

index c20d02cc..58b24f9b 100644 --- a/include/MatrixClient.h +++ b/include/MatrixClient.h
@@ -19,6 +19,7 @@ #include <QtNetwork/QNetworkAccessManager> +#include "MessageEvent.h" #include "Profile.h" #include "RoomMessages.h" #include "Sync.h" @@ -29,145 +30,152 @@ */ class MatrixClient : public QNetworkAccessManager { - Q_OBJECT + Q_OBJECT public: - MatrixClient(QString server, QObject *parent = 0); - - // Client API. - void initialSync() noexcept; - void sync() noexcept; - void sendTextMessage(const QString &roomid, const QString &msg) noexcept; - void login(const QString &username, const QString &password) noexcept; - void registerUser(const QString &username, const QString &password, const QString &server) noexcept; - void versions() noexcept; - void fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url); - void fetchUserAvatar(const QString &userId, const QUrl &avatarUrl); - void fetchOwnAvatar(const QUrl &avatar_url); - void downloadImage(const QString &event_id, const QUrl &url); - void messages(const QString &room_id, const QString &from_token, int limit = 20) noexcept; - - inline QUrl getHomeServer(); - inline int transactionId(); - inline void incrementTransactionId(); - - void reset() noexcept; + MatrixClient(QString server, QObject *parent = 0); + + // Client API. + void initialSync() noexcept; + void sync() noexcept; + void sendRoomMessage(matrix::events::MessageEventType ty, + const QString &roomid, + const QString &msg) noexcept; + void login(const QString &username, const QString &password) noexcept; + void registerUser(const QString &username, + const QString &password, + const QString &server) noexcept; + void versions() noexcept; + void fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url); + void fetchUserAvatar(const QString &userId, const QUrl &avatarUrl); + void fetchOwnAvatar(const QUrl &avatar_url); + void downloadImage(const QString &event_id, const QUrl &url); + void messages(const QString &room_id, const QString &from_token, int limit = 20) noexcept; + + inline QUrl getHomeServer(); + inline int transactionId(); + inline void incrementTransactionId(); + + void reset() noexcept; public slots: - void getOwnProfile() noexcept; - void logout() noexcept; + void getOwnProfile() noexcept; + void logout() noexcept; - inline void setServer(const QString &server); - inline void setAccessToken(const QString &token); - inline void setNextBatchToken(const QString &next_batch); + inline void setServer(const QString &server); + inline void setAccessToken(const QString &token); + inline void setNextBatchToken(const QString &next_batch); signals: - void loginError(const QString &error); - void registerError(const QString &error); - void versionError(const QString &error); - - void loggedOut(); - - void loginSuccess(const QString &userid, const QString &homeserver, const QString &token); - void registerSuccess(const QString &userid, const QString &homeserver, const QString &token); - void versionSuccess(); - - void roomAvatarRetrieved(const QString &roomid, const QPixmap &img); - void userAvatarRetrieved(const QString &userId, const QImage &img); - void ownAvatarRetrieved(const QPixmap &img); - void imageDownloaded(const QString &event_id, const QPixmap &img); - - // Returned profile data for the user's account. - void getOwnProfileResponse(const QUrl &avatar_url, const QString &display_name); - void initialSyncCompleted(const SyncResponse &response); - void syncCompleted(const SyncResponse &response); - void syncFailed(const QString &msg); - void messageSent(const QString &event_id, const QString &roomid, const int txn_id); - void messagesRetrieved(const QString &room_id, const RoomMessages &msgs); + void loginError(const QString &error); + void registerError(const QString &error); + void versionError(const QString &error); + + void loggedOut(); + + void loginSuccess(const QString &userid, const QString &homeserver, const QString &token); + void registerSuccess(const QString &userid, + const QString &homeserver, + const QString &token); + void versionSuccess(); + + void roomAvatarRetrieved(const QString &roomid, const QPixmap &img); + void userAvatarRetrieved(const QString &userId, const QImage &img); + void ownAvatarRetrieved(const QPixmap &img); + void imageDownloaded(const QString &event_id, const QPixmap &img); + + // Returned profile data for the user's account. + void getOwnProfileResponse(const QUrl &avatar_url, const QString &display_name); + void initialSyncCompleted(const SyncResponse &response); + void syncCompleted(const SyncResponse &response); + void syncFailed(const QString &msg); + void messageSent(const QString &event_id, const QString &roomid, const int txn_id); + void emoteSent(const QString &event_id, const QString &roomid, const int txn_id); + void messagesRetrieved(const QString &room_id, const RoomMessages &msgs); private slots: - void onResponse(QNetworkReply *reply); + void onResponse(QNetworkReply *reply); private: - enum class Endpoint { - GetOwnAvatar, - GetOwnProfile, - GetProfile, - Image, - InitialSync, - Login, - Logout, - Messages, - Register, - RoomAvatar, - UserAvatar, - SendTextMessage, - Sync, - Versions, - }; - - // Response handlers. - void onLoginResponse(QNetworkReply *reply); - void onLogoutResponse(QNetworkReply *reply); - void onRegisterResponse(QNetworkReply *reply); - void onVersionsResponse(QNetworkReply *reply); - void onGetOwnProfileResponse(QNetworkReply *reply); - void onGetOwnAvatarResponse(QNetworkReply *reply); - void onSendTextMessageResponse(QNetworkReply *reply); - void onInitialSyncResponse(QNetworkReply *reply); - void onSyncResponse(QNetworkReply *reply); - void onRoomAvatarResponse(QNetworkReply *reply); - void onUserAvatarResponse(QNetworkReply *reply); - void onImageResponse(QNetworkReply *reply); - void onMessagesResponse(QNetworkReply *reply); - - // Client API prefix. - QString api_url_; - - // The Matrix server used for communication. - QUrl server_; - - // The access token used for authentication. - QString token_; - - // Increasing transaction ID. - int txn_id_; - - // Token to be used for the next sync. - QString next_batch_; + enum class Endpoint { + GetOwnAvatar, + GetOwnProfile, + GetProfile, + Image, + InitialSync, + Login, + Logout, + Messages, + Register, + RoomAvatar, + SendRoomMessage, + Sync, + UserAvatar, + Versions, + }; + + // Response handlers. + void onGetOwnAvatarResponse(QNetworkReply *reply); + void onGetOwnProfileResponse(QNetworkReply *reply); + void onImageResponse(QNetworkReply *reply); + void onInitialSyncResponse(QNetworkReply *reply); + void onLoginResponse(QNetworkReply *reply); + void onLogoutResponse(QNetworkReply *reply); + void onMessagesResponse(QNetworkReply *reply); + void onRegisterResponse(QNetworkReply *reply); + void onRoomAvatarResponse(QNetworkReply *reply); + void onSendRoomMessage(QNetworkReply *reply); + void onSyncResponse(QNetworkReply *reply); + void onUserAvatarResponse(QNetworkReply *reply); + void onVersionsResponse(QNetworkReply *reply); + + // Client API prefix. + QString api_url_; + + // The Matrix server used for communication. + QUrl server_; + + // The access token used for authentication. + QString token_; + + // Increasing transaction ID. + int txn_id_; + + // Token to be used for the next sync. + QString next_batch_; }; inline QUrl MatrixClient::getHomeServer() { - return server_; + return server_; } inline int MatrixClient::transactionId() { - return txn_id_; + return txn_id_; } inline void MatrixClient::setServer(const QString &server) { - server_ = QUrl(QString("https://%1").arg(server)); + server_ = QUrl(QString("https://%1").arg(server)); } inline void MatrixClient::setAccessToken(const QString &token) { - token_ = token; + token_ = token; } inline void MatrixClient::setNextBatchToken(const QString &next_batch) { - next_batch_ = next_batch; + next_batch_ = next_batch; } inline void MatrixClient::incrementTransactionId() { - txn_id_ += 1; + txn_id_ += 1; }