message deletion, getters for displayname and profile picture

This commit is contained in:
rexy712
2019-03-30 19:30:01 -07:00
parent 8808608ffd
commit da028e03fd
4 changed files with 29 additions and 5 deletions

View File

@@ -14,10 +14,7 @@ matrix:
send custom html messages
kick users
ban/unban users
profile_picture getter
display_name getter
list room members
delete messages
change password
ability to select specification revision

View File

@@ -235,6 +235,8 @@ namespace matrix{
//networked getter
raii::rjp_string get_display_name(void)const;
raii::rjp_string get_profile_picture(void)const;
raii::rjp_string room_alias_to_id(const raii::string_base& alias)const;
std::vector<raii::rjp_string> list_rooms(void)const;
@@ -262,9 +264,12 @@ namespace matrix{
raii::rjp_string send_message(const raii::string_base& room, const raii::string_base& text)const;
raii::rjp_string send_audio(const raii::string_base& room, const audio_info& audio)const;
raii::rjp_string send_file(const raii::string_base& room, const file_info& file)const;
void send_typing(const raii::string_base& room, bool active, int timeout = 5000)const;
raii::rjp_string redact_event(const raii::string_base& roomid, const raii::string_base& eventid, const raii::string_base& reason)const;
raii::rjp_string redact_event(const raii::string_base& roomid, const raii::string_base& eventid)const;
template<class Func>
void set_message_callback(Func&& f){
m_message_callback = std::forward<Func>(f);

View File

@@ -90,6 +90,12 @@ namespace matrix{
raii::string reply = _put_curl(raii::string("{\"avatar_url\":\"" + media_url + "\"}"), m_urls.profile_picture(), raii::curl_llist());
}
raii::rjp_string bot::get_display_name(void)const{
return _get_and_find(m_urls.displayname(), "displayname"_ss);
}
raii::rjp_string bot::get_profile_picture(void)const{
return _get_and_find(m_urls.profile_picture(), "avatar_url"_ss);
}
raii::rjp_string bot::room_alias_to_id(const raii::string_base& alias)const{
auto tmp = m_curl.encode(alias, alias.length());
return _get_and_find(raii::string(m_urls.alias_lookup() + tmp), "room_id"_ss);
@@ -412,6 +418,20 @@ namespace matrix{
_put_curl("{\"typing\":false}"_ss, m_urls.typing(m_homeserver, m_access_token, m_curl.encode(room), m_curl.encode(m_userid)), raii::curl_llist());
}
raii::rjp_string bot::redact_event(const raii::string_base& roomid, const raii::string_base& eventid, const raii::string_base& reason)const{
auto ret = _put_curl(raii::string("{\"reason\":\"" + reason + "\"}"), m_urls.redact(m_homeserver, m_access_token, m_curl.encode(roomid), m_curl.encode(eventid)), raii::curl_llist());
if(!ret) return {};
raii::rjp_ptr root(rjp_parse(ret.get()));
if(!root) return {};
RJP_search_res res = rjp_search_member(root.get(), "event_id", 0);
if(!res.value) return {};
return raii::rjp_string(res.value);
}
raii::rjp_string bot::redact_event(const raii::string_base& roomid, const raii::string_base& eventid)const{
return redact_event(roomid, eventid, ""_ss);
}
void bot::logout(void){
_get_curl(m_urls.logout(m_homeserver, m_access_token));
m_urls.invalidate_accesstoken();
@@ -756,7 +776,7 @@ namespace matrix{
return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/send/m.room.message?access_token=" + access_token);
}
raii::string bot::mat_url_list::redact(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 + "/redact/" + eventid + "?access_token=" + access_token);
return raii::string(s_proto + homeserver + "/_matrix/client/r0/rooms/" + roomid + "/redact/" + eventid + "/0?access_token=" + access_token);
}
raii::string bot::mat_url_list::power_level(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 + "/state/m.room.power_levels?access_token=" + access_token);

View File

@@ -452,6 +452,8 @@ int main(){
matbot.set_message_callback(sync_callback);
matbot.set_invite_callback(invite_callback);
matbot.redact_event("!QeYfNDCRodtNohhnaI:matrix.org"_ss, "$1553965753281066lkKaO:matrix.org"_ss, "too gay"_ss);
while(!should_quit){
sync_reply = matbot.sync(30000);
DEBUG_PRINT("syncing\n");