diff --git a/doc/TODO b/doc/TODO index 2c9fd1c..0ddff08 100644 --- a/doc/TODO +++ b/doc/TODO @@ -22,7 +22,6 @@ matrix: 3:filters room: 3:message query filters - 2:forget room 1:send custom html messages 1:set new room alias 2:delete room alias diff --git a/include/matrix/room_url_list.hpp b/include/matrix/room_url_list.hpp index 0d2339c..9360d01 100644 --- a/include/matrix/room_url_list.hpp +++ b/include/matrix/room_url_list.hpp @@ -26,19 +26,18 @@ namespace matrix{ class room_url_list { private: - raii::string m_join; - raii::string m_leave; raii::string m_typing; raii::string m_kick; raii::string m_ban; raii::string m_unban; raii::string m_invite; raii::string m_members; - raii::string m_upgrade; public: room_url_list(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& userid); - const raii::string& join_room(void)const; - const raii::string& leave_room(void)const; + raii::string join(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; + raii::string leave(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; + raii::string forget(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; + raii::string upgrade(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string read_receipt(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventid)const; raii::string send(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventtype)const; raii::string redact(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventid)const; @@ -48,7 +47,6 @@ namespace matrix{ const raii::string& unban(void)const; const raii::string& invite(void)const; const raii::string& room_members(void)const; - const raii::string& upgrade(void)const; raii::string messages(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& from, const raii::string_base& to, const raii::string_base& dir, int limit)const; diff --git a/include/matrix/roomcxn.hpp b/include/matrix/roomcxn.hpp index d35d45a..1f06e1e 100644 --- a/include/matrix/roomcxn.hpp +++ b/include/matrix/roomcxn.hpp @@ -51,6 +51,7 @@ namespace matrix{ //membership netreturn join(void)const; netreturn leave(void)const; + netreturn forget(void)const; [[deprecated("Use roomcxn::join_room instead")]] netreturn accept_invite(void)const; [[deprecated("Use roomcxn::leave_room instead")]] diff --git a/src/matrix/room_url_list.cpp b/src/matrix/room_url_list.cpp index 28760d6..31ad7e4 100644 --- a/src/matrix/room_url_list.cpp +++ b/src/matrix/room_url_list.cpp @@ -22,20 +22,23 @@ namespace matrix{ room_url_list::room_url_list(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& userid): - m_join(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/join?access_token=" + access_token), - m_leave(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/leave?access_token=" + access_token), m_typing(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/typing/" + userid + "?access_token=" + access_token), m_kick(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/kick?access_token=" + access_token), m_ban(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/ban?access_token=" + access_token), m_unban(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/unban?access_token=" + access_token), m_invite(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/invite?access_token=" + access_token), - m_members(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/joined_members?access_token=" + access_token), - m_upgrade(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/upgrade?access_token=" + access_token){} - const raii::string& room_url_list::join_room(void)const{ - return m_join; + m_members(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/joined_members?access_token=" + access_token){} + raii::string room_url_list::join(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const{ + return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/leave?access_token=" + access_token); } - const raii::string& room_url_list::leave_room(void)const{ - return m_leave; + raii::string room_url_list::leave(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const{ + return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/join?access_token=" + access_token); + } + raii::string room_url_list::forget(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const{ + return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/forget?access_token=" + access_token); + } + raii::string room_url_list::upgrade(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const{ + return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/upgrade?access_token=" + access_token); } raii::string room_url_list::read_receipt(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventid)const{ return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/receipt/m.read/" + eventid + "?access_token=" + access_token); @@ -67,9 +70,6 @@ namespace matrix{ const raii::string& room_url_list::room_members(void)const{ return m_members; } - const raii::string& room_url_list::upgrade(void)const{ - return m_upgrade; - } raii::string room_url_list::messages(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& from, const raii::string_base& to, const raii::string_base& dir, int limit)const @@ -80,15 +80,12 @@ namespace matrix{ return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/messages?from=" + from + "&limit=" + raii::itostr(limit) + "&dir=" + dir + "&access_token=" + access_token); } void room_url_list::repopulate(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid, const raii::string_base& roomid){ - m_join = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/join?access_token=" + access_token; - m_leave = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/leave?access_token=" + access_token; m_typing = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/typing/" + userid + "?access_token=" + access_token; m_kick = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/kick?access_token=" + access_token; m_ban = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/ban?access_token=" + access_token; m_unban = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/unban?access_token=" + access_token; m_invite = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/invite?access_token=" + access_token; m_members = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/joined_members?access_token=" + access_token; - m_upgrade = s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/upgrade?access_token=" + access_token; } } diff --git a/src/matrix/roomcxn.cpp b/src/matrix/roomcxn.cpp index 346c0dc..a87d761 100644 --- a/src/matrix/roomcxn.cpp +++ b/src/matrix/roomcxn.cpp @@ -35,11 +35,15 @@ namespace matrix{ m_urls(ses->homeserver, ses->access_token, m_curl.encode(m_roomid), ses->userid){} netreturn roomcxn::join(void)const{ - raii::string response = _post_curl(raii::string(), m_urls.join_room(), raii::curl_llist()); + raii::string response = _post_curl(raii::string(), m_urls.join(m_ses->homeserver, m_ses->access_token, m_roomid), raii::curl_llist()); return _create_netreturn(response, http_status()); } netreturn roomcxn::leave(void)const{ - raii::string response = _post_curl(raii::string(), m_urls.leave_room(), raii::curl_llist()); + raii::string response = _post_curl(raii::string(), m_urls.leave(m_ses->homeserver, m_ses->access_token, m_roomid), raii::curl_llist()); + return _create_netreturn(response, http_status()); + } + netreturn roomcxn::forget(void)const{ + raii::string response = _post_curl(raii::string(), m_urls.forget(m_ses->homeserver, m_ses->access_token, m_roomid), raii::curl_llist()); return _create_netreturn(response, http_status()); } netreturn roomcxn::accept_invite(void)const{ @@ -168,7 +172,7 @@ namespace matrix{ m_urls.repopulate(m_ses->homeserver, m_ses->access_token, m_ses->userid, m_roomid); } netreturn roomcxn::upgrade(int version)const{ - return _post_and_find(raii::string("{\"new_version\":\""_ss + raii::itostr(version) + "\"}"_ss), m_urls.upgrade(), raii::curl_llist(), "event_id"_ss); + return _post_and_find(raii::string("{\"new_version\":\""_ss + raii::itostr(version) + "\"}"_ss), m_urls.upgrade(m_ses->homeserver, m_ses->access_token, m_roomid), raii::curl_llist(), "event_id"_ss); } netreturn roomcxn::_send_message(const raii::string_base& msg)const{ diff --git a/src/matrix/session.cpp b/src/matrix/session.cpp index ad78350..be0d00e 100644 --- a/src/matrix/session.cpp +++ b/src/matrix/session.cpp @@ -76,7 +76,7 @@ namespace matrix{ raii::rjp_ptr root(rjp_parse(reply)); netreturn retval = _create_netreturn(root, http_status()); if(!root) - return retvl; + return retval; //attempt to change password via username/password login RJP_search_res res = rjp_search_member(root.get(), "session", 0);