diff --git a/include/matrix/client.hpp b/include/matrix/client.hpp index 3e98ae1..04feb48 100644 --- a/include/matrix/client.hpp +++ b/include/matrix/client.hpp @@ -73,6 +73,7 @@ namespace matrix{ * Returns: the display name on success, an empty string on failure. */ netreturn get_display_name(void)const; + netreturn get_display_name(const raii::string_base&)const; /* * Gets the profile picture url of the logged in user from the homeserver. * Returns: the profile picture url on success, an empty string on failure. diff --git a/include/matrix/rest/client_url_list.hpp b/include/matrix/rest/client_url_list.hpp index aba85d7..faa8501 100644 --- a/include/matrix/rest/client_url_list.hpp +++ b/include/matrix/rest/client_url_list.hpp @@ -31,7 +31,6 @@ namespace matrix::rest{ raii::string m_file_upload; raii::string m_room_list; raii::string m_alias_lookup; - raii::string m_displayname; raii::string m_profile_picture; public: @@ -46,8 +45,8 @@ namespace matrix::rest{ const raii::string& file_upload(void)const; const raii::string& room_list(void)const; const raii::string& alias_lookup(void)const; - const raii::string& displayname(void)const; const raii::string& profile_picture(void)const; + raii::string displayname(const session_info& session, const raii::string_base& userid)const; raii::string file_download(const session_info& session, const raii::string_base& mediaid); raii::string file_thumbnail(const session_info& session, const raii::string_base& fileurl, int width, int height, const raii::string_base& method)const; raii::string presence(const session_info& session, const raii::string_base& userid)const; diff --git a/src/matrix/client.cpp b/src/matrix/client.cpp index f3a9263..89c6df6 100644 --- a/src/matrix/client.cpp +++ b/src/matrix/client.cpp @@ -33,7 +33,7 @@ namespace matrix{ //networked setter netreturn client::set_display_name(const raii::string_base& newname){ - _put_curl(json::_displayname_set(newname), m_urls->displayname(), raii::curl_llist()); + _put_curl(json::_displayname_set(newname), m_urls->displayname(*m_ses, m_ses->userid), raii::curl_llist()); return netreturn(raii::string(), raii::string(), http_status()); } netreturn client::set_profile_picture(const raii::string_base& media_url){ @@ -50,7 +50,10 @@ namespace matrix{ //networked getter netreturn client::get_display_name(void)const{ - return _get_and_find(m_urls->displayname(), json::keys::displayname()); + return _get_and_find(m_urls->displayname(*m_ses, m_ses->userid), json::keys::displayname()); + } + netreturn client::get_display_name(const raii::string_base& userid)const{ + return _get_and_find(m_urls->displayname(*m_ses, userid), json::keys::displayname()); } netreturn client::get_profile_picture(void)const{ return _get_and_find(m_urls->profile_picture(), json::keys::avatarurl()); diff --git a/src/matrix/rest/client_url_list.cpp b/src/matrix/rest/client_url_list.cpp index c72fc11..7c56871 100644 --- a/src/matrix/rest/client_url_list.cpp +++ b/src/matrix/rest/client_url_list.cpp @@ -37,12 +37,12 @@ namespace matrix::rest{ const raii::string& client_url_list::alias_lookup(void)const{ return m_alias_lookup; } - const raii::string& client_url_list::displayname(void)const{ - return m_displayname; - } const raii::string& client_url_list::profile_picture(void)const{ return m_profile_picture; } + raii::string client_url_list::displayname(const session_info& session, const raii::string_base& userid)const{ + return raii::string(matrix::rest::proto() + session.homeserver + "/_matrix/client/r0/profile/" + userid + "/displayname?access_token=" + session.access_token); + } raii::string client_url_list::file_download(const session_info& session, const raii::string_base& fileurl){ raii::string media = get_server_media_string(fileurl); if(!media) return {}; @@ -66,7 +66,6 @@ namespace matrix::rest{ m_create_room = matrix::rest::proto() + session.homeserver + "/_matrix/client/r0/createRoom?access_token=" + session.access_token; m_file_upload = matrix::rest::proto() + session.homeserver + "/_matrix/media/r0/upload?access_token=" + session.access_token; m_room_list = matrix::rest::proto() + session.homeserver + "/_matrix/client/r0/joined_rooms?access_token=" + session.access_token; - m_displayname = matrix::rest::proto() + session.homeserver + "/_matrix/client/r0/profile/" + session.userid + "/displayname?access_token=" + session.access_token; m_profile_picture = matrix::rest::proto() + session.homeserver + "/_matrix/client/r0/profile/" + session.userid + "/avatar_url?access_token=" + session.access_token; m_alias_lookup = matrix::rest::proto() + session.homeserver + "/_matrix/client/r0/directory/room/"; } @@ -74,7 +73,6 @@ namespace matrix::rest{ m_create_room.reset(); m_file_upload.reset(); m_room_list.reset(); - m_displayname.reset(); m_profile_picture.reset(); m_alias_lookup.reset(); } diff --git a/src/test.cpp b/src/test.cpp index fb8f7cc..25bb18a 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -99,8 +99,11 @@ int main(){ if(event.type() == matrix::json::events::room::message()){ auto message = matrix::event_cast(std::move(event)); if(message.msgtype() == matrix::json::events::msgtype::text()) - r.send_message(raii::string("\"" + message.body() + "\" what a nigger thing to say"_ss)); + r.send_message(raii::string("\"" + message.body() + "\" what a faggot thing to say"_ss)); printf("message body: %s\n", message.body().get()); + }else if(event.type() == matrix::json::events::room::sticker()){ + auto displayname = client.get_display_name(event.sender()); + r.send_message(raii::string("only jews send stickers, "_ss + displayname.value())); } } }