/** This file is a part of r0nk, atlas_moon, and 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 . */ #ifndef MATRIX_URL_LIST_HPP #define MATRIX_URL_LIST_HPP #include "raii/string.hpp" namespace matrix{ class mat_url_list { private: raii::string m_create_room; raii::string m_file_upload; raii::string m_room_list; raii::string m_alias_lookup; raii::string m_whoami; raii::string m_displayname; raii::string m_profile_picture; public: mat_url_list(void) = default; mat_url_list(const raii::string_base& homeserver); mat_url_list(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid); mat_url_list(const mat_url_list&) = default; mat_url_list(mat_url_list&&) = default; mat_url_list& operator=(const mat_url_list&) = default; mat_url_list& operator=(mat_url_list&&) = default; static raii::string stat_whoami(const raii::string_base& homeserver, const raii::string_base& access_token); static raii::string login(const raii::string_base& homeserver); const raii::string& create_room(void)const; const raii::string& file_upload(void)const; const raii::string& room_list(void)const; const raii::string& alias_lookup(void)const; const raii::string& whoami(void)const; const raii::string& displayname(void)const; const raii::string& profile_picture(void)const; raii::string logout(const raii::string_base& homeserver, const raii::string_base& access_token)const; raii::string join_room(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string leave_room(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string sync(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& next_batch, const raii::string_base& timeout)const; raii::string read_receipt(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventid)const; raii::string send(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string redact(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& eventid)const; raii::string power_level(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string presence(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid)const; raii::string typing(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid, const raii::string_base& userid)const; raii::string kick(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string ban(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string unban(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string invite(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string room_members(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& roomid)const; raii::string password(const raii::string_base& homeserver, const raii::string_base& access_token)const; void repopulate_accesstoken(const raii::string_base& homeserver, const raii::string_base& access_token); void repopulate_userid(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid); void repopulate(const raii::string_base& homeserver, const raii::string_base& access_token, const raii::string_base& userid); void invalidate_accesstoken(void); private: void _initial_populate(const raii::string_base& homeserver); static constexpr const char* s_proto = "https://"; static constexpr const char* s_revision = "r0"; }; } #endif