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
|
1:raii swscontext
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
10: provide access to http status codes after a networked operation
|
|
||||||
7:server level queries in matrix::session
|
7:server level queries in matrix::session
|
||||||
5:list room members
|
5:list room members
|
||||||
3:presence
|
3:presence
|
||||||
|
|||||||
@ -31,11 +31,9 @@
|
|||||||
#include <cstdlib> //size_t
|
#include <cstdlib> //size_t
|
||||||
|
|
||||||
namespace matrix{
|
namespace matrix{
|
||||||
class session;
|
|
||||||
//main class
|
//main class
|
||||||
class client : public connection
|
class client : public connection
|
||||||
{
|
{
|
||||||
friend class ::matrix::session;
|
|
||||||
public:
|
public:
|
||||||
client(const std::shared_ptr<internal::session_info>&);
|
client(const std::shared_ptr<internal::session_info>&);
|
||||||
client(const client& b) = default;
|
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;
|
audio_info upload_audio(const raii::string_base& filename, const raii::string_base& alias)const;
|
||||||
|
|
||||||
//send messages
|
//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_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_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_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_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 raii::string_base& reason)const;
|
||||||
raii::rjp_string redact_event(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;
|
||||||
|
|
||||||
|
|
||||||
private:
|
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 _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;
|
raii::rjp_string _send_message(const raii::string_base& room, const raii::string_base& msg)const;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -42,6 +42,7 @@ namespace matrix{
|
|||||||
public:
|
public:
|
||||||
~connection(void) = default;
|
~connection(void) = default;
|
||||||
|
|
||||||
|
long http_status(void)const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _set_curl_useragent(const raii::string_base& useragent);
|
void _set_curl_useragent(const raii::string_base& useragent);
|
||||||
|
|||||||
@ -28,10 +28,8 @@
|
|||||||
#include <memory> //shared_ptr
|
#include <memory> //shared_ptr
|
||||||
|
|
||||||
namespace matrix{
|
namespace matrix{
|
||||||
class session;
|
|
||||||
class syncer : public connection
|
class syncer : public connection
|
||||||
{
|
{
|
||||||
friend class ::matrix::session;
|
|
||||||
private:
|
private:
|
||||||
raii::rjp_string m_next_batch; //string which tracks where we are in the server history
|
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{
|
struct audio_info : public file_info{
|
||||||
using file_info::operator=;
|
using file_info::operator=;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,6 @@ namespace raii{
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
CURL* m_curl;
|
CURL* m_curl;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
curler(void);
|
curler(void);
|
||||||
curler(const curler& c);
|
curler(const curler& c);
|
||||||
@ -65,6 +64,7 @@ namespace raii{
|
|||||||
curl_string encode(const char* data, int len = 0);
|
curl_string encode(const char* data, int len = 0);
|
||||||
curl_string decode(const char* data, int* outlen = nullptr, int len = 0);
|
curl_string decode(const char* data, int* outlen = nullptr, int len = 0);
|
||||||
|
|
||||||
|
long last_status(void)const;
|
||||||
CURL* get(void);
|
CURL* get(void);
|
||||||
const CURL* get(void)const;
|
const CURL* get(void)const;
|
||||||
operator CURL*(void);
|
operator CURL*(void);
|
||||||
|
|||||||
@ -255,6 +255,12 @@ namespace matrix{
|
|||||||
|
|
||||||
|
|
||||||
//send messages
|
//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{
|
raii::rjp_string client::send_file(const raii::string_base& room, const file_info& file)const{
|
||||||
return _send_message(room, detail::_file_body(file));
|
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{
|
raii::rjp_string client::send_audio(const raii::string_base& room, const audio_info& audio)const{
|
||||||
return _send_message(room, detail::_audio_body(audio));
|
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{
|
void client::send_typing(const raii::string_base& room, bool active, int timeout)const{
|
||||||
if(active)
|
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());
|
_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
|
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());
|
_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{
|
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());
|
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
|
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::rjp_string client::_upload_file(raii::filerd& fp, const raii::curl_llist& header)const{
|
||||||
raii::string fileurl;
|
raii::string fileurl;
|
||||||
m_curl.postreq();
|
m_curl.postreq();
|
||||||
|
|||||||
@ -30,6 +30,9 @@ namespace matrix{
|
|||||||
{
|
{
|
||||||
_set_curl_defaults(""_ss);
|
_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){
|
void connection::_set_curl_useragent(const raii::string_base& useragent){
|
||||||
m_curl.setuseragent(useragent);
|
m_curl.setuseragent(useragent);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -112,6 +112,11 @@ namespace raii{
|
|||||||
return curl_string(tmp, out);
|
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){
|
CURL* curler::get(void){
|
||||||
return m_curl;
|
return m_curl;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user