Access to http codes added
This commit is contained in:
parent
f77a8292d6
commit
3bf609af18
1
doc/TODO
1
doc/TODO
@ -5,7 +5,6 @@ general/other:
|
||||
1:raii swscontext
|
||||
|
||||
matrix:
|
||||
10: provide access to http status codes after a networked operation
|
||||
7:server level queries in matrix::session
|
||||
5:list room members
|
||||
3:presence
|
||||
|
||||
@ -31,11 +31,9 @@
|
||||
#include <cstdlib> //size_t
|
||||
|
||||
namespace matrix{
|
||||
class session;
|
||||
//main class
|
||||
class client : public connection
|
||||
{
|
||||
friend class ::matrix::session;
|
||||
public:
|
||||
client(const std::shared_ptr<internal::session_info>&);
|
||||
client(const client& b) = default;
|
||||
@ -85,18 +83,20 @@ namespace matrix{
|
||||
audio_info upload_audio(const raii::string_base& filename, const raii::string_base& alias)const;
|
||||
|
||||
//send messages
|
||||
raii::rjp_string send_custom_event(const raii::string_base& room, const raii::string_base& event)const;
|
||||
raii::rjp_string send_message(const raii::string_base& room, const raii::string_base& text)const;
|
||||
raii::rjp_string send_file(const raii::string_base& room, const file_info& file)const;
|
||||
raii::rjp_string send_image(const raii::string_base& room, const image_info& image)const;
|
||||
raii::rjp_string send_video(const raii::string_base& room, const video_info& video)const;
|
||||
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;
|
||||
void send_read_receipt(const raii::string_base& roomid, const raii::string_base& eventid)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;
|
||||
|
||||
|
||||
private:
|
||||
void _send_read_receipt(const raii::string_base& roomid, const raii::string_base& eventid)const;
|
||||
raii::rjp_string _upload_file(raii::filerd& fp, const raii::curl_llist& header)const;
|
||||
raii::rjp_string _send_message(const raii::string_base& room, const raii::string_base& msg)const;
|
||||
};
|
||||
|
||||
@ -42,6 +42,7 @@ namespace matrix{
|
||||
public:
|
||||
~connection(void) = default;
|
||||
|
||||
long http_status(void)const;
|
||||
|
||||
protected:
|
||||
void _set_curl_useragent(const raii::string_base& useragent);
|
||||
|
||||
@ -28,10 +28,8 @@
|
||||
#include <memory> //shared_ptr
|
||||
|
||||
namespace matrix{
|
||||
class session;
|
||||
class syncer : public connection
|
||||
{
|
||||
friend class ::matrix::session;
|
||||
private:
|
||||
raii::rjp_string m_next_batch; //string which tracks where we are in the server history
|
||||
|
||||
|
||||
@ -46,7 +46,6 @@ namespace matrix{
|
||||
};
|
||||
struct audio_info : public file_info{
|
||||
using file_info::operator=;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -31,7 +31,6 @@ namespace raii{
|
||||
{
|
||||
private:
|
||||
CURL* m_curl;
|
||||
|
||||
public:
|
||||
curler(void);
|
||||
curler(const curler& c);
|
||||
@ -65,6 +64,7 @@ namespace raii{
|
||||
curl_string encode(const char* data, int len = 0);
|
||||
curl_string decode(const char* data, int* outlen = nullptr, int len = 0);
|
||||
|
||||
long last_status(void)const;
|
||||
CURL* get(void);
|
||||
const CURL* get(void)const;
|
||||
operator CURL*(void);
|
||||
|
||||
@ -255,6 +255,12 @@ namespace matrix{
|
||||
|
||||
|
||||
//send messages
|
||||
raii::rjp_string client::send_custom_event(const raii::string_base& room, const raii::string_base& event)const{
|
||||
return _send_message(room, event);
|
||||
}
|
||||
raii::rjp_string client::send_message(const raii::string_base& room, const raii::string_base& text)const{
|
||||
return _send_message(room, detail::_message_body(text));
|
||||
}
|
||||
raii::rjp_string client::send_file(const raii::string_base& room, const file_info& file)const{
|
||||
return _send_message(room, detail::_file_body(file));
|
||||
}
|
||||
@ -267,15 +273,15 @@ namespace matrix{
|
||||
raii::rjp_string client::send_audio(const raii::string_base& room, const audio_info& audio)const{
|
||||
return _send_message(room, detail::_audio_body(audio));
|
||||
}
|
||||
raii::rjp_string client::send_message(const raii::string_base& room, const raii::string_base& text)const{
|
||||
return _send_message(room, detail::_message_body(text));
|
||||
}
|
||||
void client::send_typing(const raii::string_base& room, bool active, int timeout)const{
|
||||
if(active)
|
||||
_put_curl(raii::string("{\"timeout\":" + raii::itostr(timeout) + ",\"typing\":true}"), m_ses->urls.typing(m_ses->homeserver, m_ses->access_token, m_curl.encode(room), m_curl.encode(m_ses->userid)), raii::curl_llist());
|
||||
else
|
||||
_put_curl("{\"typing\":false}"_ss, m_ses->urls.typing(m_ses->homeserver, m_ses->access_token, m_curl.encode(room), m_curl.encode(m_ses->userid)), raii::curl_llist());
|
||||
}
|
||||
void client::send_read_receipt(const raii::string_base& roomid, const raii::string_base& eventid)const{
|
||||
_post_curl(""_ss, m_ses->urls.read_receipt(m_ses->homeserver, m_ses->access_token, m_curl.encode(roomid), m_curl.encode(eventid)), raii::curl_llist());
|
||||
}
|
||||
|
||||
raii::rjp_string client::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_ses->urls.redact(m_ses->homeserver, m_ses->access_token, m_curl.encode(roomid), m_curl.encode(eventid)), raii::curl_llist());
|
||||
@ -295,9 +301,6 @@ namespace matrix{
|
||||
Internal functions
|
||||
********************************/
|
||||
|
||||
void client::_send_read_receipt(const raii::string_base& roomid, const raii::string_base& eventid)const{
|
||||
_post_curl(""_ss, m_ses->urls.read_receipt(m_ses->homeserver, m_ses->access_token, m_curl.encode(roomid), m_curl.encode(eventid)), raii::curl_llist());
|
||||
}
|
||||
raii::rjp_string client::_upload_file(raii::filerd& fp, const raii::curl_llist& header)const{
|
||||
raii::string fileurl;
|
||||
m_curl.postreq();
|
||||
|
||||
@ -30,6 +30,9 @@ namespace matrix{
|
||||
{
|
||||
_set_curl_defaults(""_ss);
|
||||
}
|
||||
long connection::http_status(void)const{
|
||||
return m_curl.last_status();
|
||||
}
|
||||
void connection::_set_curl_useragent(const raii::string_base& useragent){
|
||||
m_curl.setuseragent(useragent);
|
||||
}
|
||||
|
||||
@ -112,6 +112,11 @@ namespace raii{
|
||||
return curl_string(tmp, out);
|
||||
}
|
||||
|
||||
long curler::last_status(void)const{
|
||||
long httpcode;
|
||||
curl_easy_getinfo(m_curl, CURLINFO_RESPONSE_CODE, &httpcode);
|
||||
return httpcode;
|
||||
}
|
||||
CURL* curler::get(void){
|
||||
return m_curl;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user