Add individual event access to roomcxn. Add m.notice helper function for bots
This commit is contained in:
parent
cfe4d67bff
commit
341cbc5c6d
@ -35,11 +35,12 @@ namespace matrix::sync{
|
|||||||
RJP_value* m_type;
|
RJP_value* m_type;
|
||||||
RJP_value* m_content;
|
RJP_value* m_content;
|
||||||
public:
|
public:
|
||||||
|
event(void) = default;
|
||||||
explicit event(RJP_value* ev);
|
explicit event(RJP_value* ev);
|
||||||
event(const event&) = delete; //TODO
|
event(const event&) = delete; //TODO
|
||||||
event(event&&)noexcept;
|
event(event&&)noexcept;
|
||||||
~event(void) = default;
|
~event(void) = default;
|
||||||
event& operator=(const event&) = default;
|
event& operator=(const event&);
|
||||||
|
|
||||||
raii::static_string type(void)const&;
|
raii::static_string type(void)const&;
|
||||||
raii::rjp_string type(void)&&;
|
raii::rjp_string type(void)&&;
|
||||||
@ -56,10 +57,13 @@ namespace matrix::sync{
|
|||||||
class room_event_base
|
class room_event_base
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
const raii::static_string m_roomid;
|
raii::static_string m_roomid;
|
||||||
public:
|
public:
|
||||||
|
room_event_base(void) = default;
|
||||||
room_event_base(const room_event_base&) = delete;
|
room_event_base(const room_event_base&) = delete;
|
||||||
constexpr room_event_base(room_event_base&&) = default;
|
constexpr room_event_base(room_event_base&&) = default;
|
||||||
|
room_event_base& operator=(const room_event_base&) = default;
|
||||||
|
room_event_base& operator=(room_event_base&&) = default;
|
||||||
|
|
||||||
constexpr room_event_base(const raii::string_base& roomid):
|
constexpr room_event_base(const raii::string_base& roomid):
|
||||||
m_roomid(roomid.get(), roomid.length()){}
|
m_roomid(roomid.get(), roomid.length()){}
|
||||||
@ -80,9 +84,12 @@ namespace matrix::sync{
|
|||||||
RJP_value* m_redacts;
|
RJP_value* m_redacts;
|
||||||
int m_origin_server_ts;
|
int m_origin_server_ts;
|
||||||
public:
|
public:
|
||||||
|
room_event(void) = default;
|
||||||
room_event(RJP_value* ev, const raii::string_base& roomid);
|
room_event(RJP_value* ev, const raii::string_base& roomid);
|
||||||
room_event(const room_event&) = delete; //TODO
|
room_event(const room_event&) = delete; //TODO
|
||||||
room_event(room_event&&)noexcept;
|
room_event(room_event&&)noexcept;
|
||||||
|
room_event& operator=(const room_event&) = delete;
|
||||||
|
room_event& operator=(room_event&&);
|
||||||
|
|
||||||
raii::static_string eventid(void)const&;
|
raii::static_string eventid(void)const&;
|
||||||
raii::rjp_string eventid(void)&&;
|
raii::rjp_string eventid(void)&&;
|
||||||
@ -106,10 +113,13 @@ namespace matrix::sync{
|
|||||||
RJP_value* m_state_key;
|
RJP_value* m_state_key;
|
||||||
RJP_value* m_prev_content;
|
RJP_value* m_prev_content;
|
||||||
public:
|
public:
|
||||||
|
room_state_event(void) = default;
|
||||||
room_state_event(RJP_value* ev, const raii::string_base& roomid);
|
room_state_event(RJP_value* ev, const raii::string_base& roomid);
|
||||||
room_state_event(const room_state_event&) = delete; //TODO
|
room_state_event(const room_state_event&) = delete; //TODO
|
||||||
room_state_event(room_state_event&&)noexcept;
|
room_state_event(room_state_event&&);
|
||||||
|
|
||||||
|
room_state_event& operator=(const room_state_event&) = delete;
|
||||||
|
room_state_event& operator=(room_state_event&&);
|
||||||
raii::static_string state_key(void)const&;
|
raii::static_string state_key(void)const&;
|
||||||
raii::rjp_string state_key(void)&&;
|
raii::rjp_string state_key(void)&&;
|
||||||
raii::static_string prev_content(void)const&;
|
raii::static_string prev_content(void)const&;
|
||||||
|
|||||||
@ -35,6 +35,7 @@ namespace matrix::json{
|
|||||||
raii::string _file_body(const uploaded_file& video);
|
raii::string _file_body(const uploaded_file& video);
|
||||||
raii::string _audio_body(const uploaded_audio& audio);
|
raii::string _audio_body(const uploaded_audio& audio);
|
||||||
raii::string _message_body(const raii::string_base& text);
|
raii::string _message_body(const raii::string_base& text);
|
||||||
|
raii::string _notice_body(const raii::string_base& msg);
|
||||||
raii::string _login_password(const raii::string_base& userid, const raii::string_base& password);
|
raii::string _login_password(const raii::string_base& userid, const raii::string_base& password);
|
||||||
raii::string _change_psk_password(const raii::string_base& userid, const raii::string_base& newpass, const raii::string_base& oldpass, const raii::string_base& session);
|
raii::string _change_psk_password(const raii::string_base& userid, const raii::string_base& newpass, const raii::string_base& oldpass, const raii::string_base& session);
|
||||||
|
|
||||||
|
|||||||
@ -42,6 +42,7 @@ namespace matrix{
|
|||||||
raii::string read_receipt(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const;
|
raii::string read_receipt(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const;
|
||||||
raii::string send(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventtype)const;
|
raii::string send(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventtype)const;
|
||||||
raii::string redact(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const;
|
raii::string redact(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const;
|
||||||
|
raii::string event(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const;
|
||||||
const raii::string& typing(void)const;
|
const raii::string& typing(void)const;
|
||||||
const raii::string& kick(void)const;
|
const raii::string& kick(void)const;
|
||||||
const raii::string& ban(void)const;
|
const raii::string& ban(void)const;
|
||||||
|
|||||||
@ -69,13 +69,16 @@ namespace matrix{
|
|||||||
//sending events
|
//sending events
|
||||||
netreturn<raii::rjp_string> send_custom_event(const raii::string_base& event, const raii::string_base& eventtype)const;
|
netreturn<raii::rjp_string> send_custom_event(const raii::string_base& event, const raii::string_base& eventtype)const;
|
||||||
netreturn<raii::rjp_string> send_message(const raii::string_base& text)const;
|
netreturn<raii::rjp_string> send_message(const raii::string_base& text)const;
|
||||||
|
netreturn<raii::rjp_string> send_notice(const raii::string_base& text)const;
|
||||||
netreturn<raii::rjp_string> send_file(const uploaded_file& file)const;
|
netreturn<raii::rjp_string> send_file(const uploaded_file& file)const;
|
||||||
netreturn<raii::rjp_string> send_image(const uploaded_image& image)const;
|
netreturn<raii::rjp_string> send_image(const uploaded_image& image)const;
|
||||||
netreturn<raii::rjp_string> send_video(const uploaded_video& video)const;
|
netreturn<raii::rjp_string> send_video(const uploaded_video& video)const;
|
||||||
netreturn<raii::rjp_string> send_audio(const uploaded_audio& audio)const;
|
netreturn<raii::rjp_string> send_audio(const uploaded_audio& audio)const;
|
||||||
|
netreturn<raii::rjp_string> forward_event(const sync::room_event&)const;
|
||||||
netreturn<void> send_typing(bool active, int timeout = 5000)const;
|
netreturn<void> send_typing(bool active, int timeout = 5000)const;
|
||||||
netreturn<void> send_read_receipt(const raii::string_base& eventid)const;
|
netreturn<void> send_read_receipt(const raii::string_base& eventid)const;
|
||||||
|
|
||||||
|
netreturn<sync::roomcxn_message_event_list> get_event(const raii::string_base& eventid)const;
|
||||||
netreturn<raii::rjp_string> redact_event(const raii::string_base& eventid, const raii::string_base& reason)const;
|
netreturn<raii::rjp_string> redact_event(const raii::string_base& eventid, const raii::string_base& reason)const;
|
||||||
netreturn<raii::rjp_string> redact_event(const raii::string_base& eventid)const;
|
netreturn<raii::rjp_string> redact_event(const raii::string_base& eventid)const;
|
||||||
|
|
||||||
|
|||||||
@ -140,6 +140,13 @@ namespace matrix::json{
|
|||||||
member(json::keys::event::contentbody::msgtype(), quote("m.text"_ss))
|
member(json::keys::event::contentbody::msgtype(), quote("m.text"_ss))
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
raii::string _notice_body(const raii::string_base& msg){
|
||||||
|
return raii::string(
|
||||||
|
object(
|
||||||
|
member(json::keys::event::contentbody::body(), quote(raii::json_escape(msg))),
|
||||||
|
member(json::keys::event::contentbody::msgtype(), quote("m.notice"_ss))
|
||||||
|
));
|
||||||
|
}
|
||||||
raii::string _login_password(const raii::string_base& username, const raii::string_base& password){
|
raii::string _login_password(const raii::string_base& username, const raii::string_base& password){
|
||||||
return raii::string(
|
return raii::string(
|
||||||
object(
|
object(
|
||||||
|
|||||||
@ -49,6 +49,9 @@ namespace matrix{
|
|||||||
raii::string room_url_list::redact(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const{
|
raii::string room_url_list::redact(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const{
|
||||||
return raii::string(s_proto + session.homeserver + "/_matrix/client/r0/rooms/" + roomid + "/redact/" + eventid + "/0?access_token=" + session.access_token);
|
return raii::string(s_proto + session.homeserver + "/_matrix/client/r0/rooms/" + roomid + "/redact/" + eventid + "/0?access_token=" + session.access_token);
|
||||||
}
|
}
|
||||||
|
raii::string room_url_list::event(const session_info& session, const raii::string_base& roomid, const raii::string_base& eventid)const{
|
||||||
|
return raii::string(s_proto + session.homeserver + "/_matrix/client/r0/rooms/" + roomid + "/event/" + eventid + "?access_token=" + session.access_token);
|
||||||
|
}
|
||||||
raii::string room_url_list::power_level(const session_info& session, const raii::string_base& roomid)const{
|
raii::string room_url_list::power_level(const session_info& session, const raii::string_base& roomid)const{
|
||||||
return raii::string(s_proto + session.homeserver + "/_matrix/client/r0/rooms/" + roomid + "/state/m.room.power_levels?access_token=" + session.access_token);
|
return raii::string(s_proto + session.homeserver + "/_matrix/client/r0/rooms/" + roomid + "/state/m.room.power_levels?access_token=" + session.access_token);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,6 +114,9 @@ namespace matrix{
|
|||||||
netreturn<raii::rjp_string> roomcxn::send_message(const raii::string_base& text)const{
|
netreturn<raii::rjp_string> roomcxn::send_message(const raii::string_base& text)const{
|
||||||
return _send_message(json::_message_body(text));
|
return _send_message(json::_message_body(text));
|
||||||
}
|
}
|
||||||
|
netreturn<raii::rjp_string> roomcxn::send_notice(const raii::string_base& text)const{
|
||||||
|
return _send_message(json::_notice_body(text));
|
||||||
|
}
|
||||||
netreturn<raii::rjp_string> roomcxn::send_file(const uploaded_file& file)const{
|
netreturn<raii::rjp_string> roomcxn::send_file(const uploaded_file& file)const{
|
||||||
return _send_message(json::_file_body(file));
|
return _send_message(json::_file_body(file));
|
||||||
}
|
}
|
||||||
@ -126,6 +129,10 @@ namespace matrix{
|
|||||||
netreturn<raii::rjp_string> roomcxn::send_audio(const uploaded_audio& audio)const{
|
netreturn<raii::rjp_string> roomcxn::send_audio(const uploaded_audio& audio)const{
|
||||||
return _send_message(json::_audio_body(audio));
|
return _send_message(json::_audio_body(audio));
|
||||||
}
|
}
|
||||||
|
netreturn<raii::rjp_string> roomcxn::forward_event(const sync::room_event& event)const{
|
||||||
|
raii::rjp_string content = rjp_to_json(event.content());
|
||||||
|
return send_custom_event(content, event.type());
|
||||||
|
}
|
||||||
netreturn<void> roomcxn::send_typing(bool active, int timeout)const{
|
netreturn<void> roomcxn::send_typing(bool active, int timeout)const{
|
||||||
return _create_netreturn(_put_curl(json::_typing(active, timeout), m_urls.typing(), raii::curl_llist()), http_status());
|
return _create_netreturn(_put_curl(json::_typing(active, timeout), m_urls.typing(), raii::curl_llist()), http_status());
|
||||||
}
|
}
|
||||||
@ -133,6 +140,16 @@ namespace matrix{
|
|||||||
return _create_netreturn(_post_curl(raii::string(), m_urls.read_receipt(*m_ses, m_curl.encode(m_roomid), m_curl.encode(eventid)), raii::curl_llist()), http_status());
|
return _create_netreturn(_post_curl(raii::string(), m_urls.read_receipt(*m_ses, m_curl.encode(m_roomid), m_curl.encode(eventid)), raii::curl_llist()), http_status());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
netreturn<sync::roomcxn_message_event_list> roomcxn::get_event(const raii::string_base& eventid)const{
|
||||||
|
raii::string reply = _get_curl(m_urls.event(*m_ses, m_curl.encode(m_roomid), eventid));
|
||||||
|
if(!reply) return _create_netreturn(reply, http_status());
|
||||||
|
raii::rjp_ptr root(rjp_parse(reply.get()));
|
||||||
|
if(!root.get()) _create_netreturn(root, http_status());
|
||||||
|
|
||||||
|
netreturn<sync::roomcxn_message_event_list> retval = _create_netreturn(root, http_status());
|
||||||
|
retval.value() = sync::roomcxn_message_event_list(root, root.get(), m_roomid);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
netreturn<raii::rjp_string> roomcxn::redact_event(const raii::string_base& eventid, const raii::string_base& reason)const{
|
netreturn<raii::rjp_string> roomcxn::redact_event(const raii::string_base& eventid, const raii::string_base& reason)const{
|
||||||
return _put_and_find(json::_redact(reason), m_urls.redact(*m_ses, m_curl.encode(m_roomid), m_curl.encode(eventid)), raii::curl_llist(), json::keys::event::eventid());
|
return _put_and_find(json::_redact(reason), m_urls.redact(*m_ses, m_curl.encode(m_roomid), m_curl.encode(eventid)), raii::curl_llist(), json::keys::event::eventid());
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user