/** 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 . */ #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/"; } }