99 lines
4.8 KiB
C++
99 lines
4.8 KiB
C++
/**
|
|
This file is a part of rexy's matrix client
|
|
Copyright (C) 2019 rexy712
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "matrix/client_url_list.hpp"
|
|
#include "raii/string.hpp"
|
|
|
|
namespace matrix{
|
|
|
|
client_url_list::client_url_list(const raii::string_base& homeserver){
|
|
_initial_populate(homeserver);
|
|
}
|
|
client_url_list::client_url_list(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid){
|
|
repopulate(homeserver, access_token, userid);
|
|
}
|
|
void client_url_list::repopulate_accesstoken(const raii::string_base& homeserver, const raii::string_base& access_token){
|
|
m_create_room = s_proto + homeserver + "/_matrix/client/r0/createRoom?access_token=" + access_token;
|
|
m_file_upload = s_proto + homeserver + "/_matrix/media/r0/upload?access_token=" + access_token;
|
|
m_room_list = s_proto + homeserver + "/_matrix/client/r0/joined_rooms?access_token=" + access_token;
|
|
m_whoami = stat_whoami(homeserver, access_token);
|
|
}
|
|
void client_url_list::repopulate_userid(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid){
|
|
m_displayname = s_proto + homeserver + "/_matrix/client/r0/profile/" + userid + "/displayname?access_token=" + access_token;
|
|
m_profile_picture = s_proto + homeserver + "/_matrix/client/r0/profile/" + userid + "/avatar_url?access_token=" + access_token;
|
|
}
|
|
void client_url_list::repopulate(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid){
|
|
_initial_populate(homeserver);
|
|
repopulate_accesstoken(homeserver, access_token);
|
|
repopulate_userid(homeserver, access_token, userid);
|
|
}
|
|
void client_url_list::invalidate_accesstoken(void){
|
|
m_create_room.reset();
|
|
m_file_upload.reset();
|
|
m_room_list.reset();
|
|
m_whoami.reset();
|
|
m_displayname.reset();
|
|
m_profile_picture.reset();
|
|
}
|
|
const raii::string& client_url_list::create_room(void)const{
|
|
return m_create_room;
|
|
}
|
|
const raii::string& client_url_list::file_upload(void)const{
|
|
return m_file_upload;
|
|
}
|
|
const raii::string& client_url_list::room_list(void)const{
|
|
return m_room_list;
|
|
}
|
|
raii::string client_url_list::login(const raii::string_base& homeserver){
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/login");
|
|
}
|
|
raii::string client_url_list::stat_whoami(const raii::string_base& homeserver, const raii::string_base& access_token){
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/account/whoami?access_token=" + access_token);
|
|
}
|
|
const raii::string& client_url_list::alias_lookup(void)const{
|
|
return m_alias_lookup;
|
|
}
|
|
const raii::string& client_url_list::whoami(void)const{
|
|
return m_whoami;
|
|
}
|
|
const raii::string& client_url_list::displayname(void)const{
|
|
return m_displayname;
|
|
}
|
|
const raii::string& client_url_list::profile_picture(void)const{
|
|
return m_profile_picture;
|
|
}
|
|
raii::string client_url_list::logout(const raii::string_base& homeserver, const raii::string_base& access_token)const{
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/logout?access_token=" + access_token);
|
|
}
|
|
raii::string client_url_list::sync(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& next_batch, const raii::string_base& timeout)const{
|
|
if(!next_batch)
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/sync?access_token=" + access_token + "&timeout=" + timeout);
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/sync?access_token=" + access_token + "&timeout=" + timeout + "&since=" + next_batch);
|
|
}
|
|
raii::string client_url_list::presence(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid)const{
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/presence/" + userid + "/status?access_token=" + access_token);
|
|
}
|
|
raii::string client_url_list::password(const raii::string_base& homeserver, const raii::string_base& access_token)const{
|
|
return raii::string(s_proto + homeserver + "/_matrix/client/r0/account/password?access_token=" + access_token);
|
|
}
|
|
void client_url_list::_initial_populate(const raii::string_base& homeserver){
|
|
m_alias_lookup = s_proto + homeserver + "/_matrix/client/r0/directory/room/";
|
|
}
|
|
|
|
}
|