Change some class names, because classes are supposed to use PascalCase.

Variables and functions should still use camelCase.
This commit is contained in:
Jacob 2024-02-19 00:04:44 +01:00
parent df36e7d798
commit e55eb6245b
15 changed files with 218 additions and 209 deletions

View file

@ -36,7 +36,7 @@ int main() {
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp{};
leet::User::CredentialsResponse resp{};
/* Check if we should consider this an attempt to register. Then we will
* either log in or register.

View file

@ -24,7 +24,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
resp = leet::loginAccount(cred);

View file

@ -29,7 +29,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
resp = leet::loginAccount(cred);

View file

@ -24,7 +24,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
resp = leet::loginAccount(cred);

View file

@ -24,7 +24,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
if (leet::checkIfUsernameIsAvailable(cred.Username)) {
resp = leet::registerAccount(cred);
@ -40,7 +40,7 @@ int main() {
leet::transID = leet::returnUnixTimestamp();
leet::URL::urlPreview prev = leet::getURLPreview(resp, URL, 0);
leet::URL::URLPreview prev = leet::getURLPreview(resp, URL, 0);
std::cout << "\033[2J\033[1;1H";
std::cout << "URL: " << prev.URL << "\n";

View file

@ -1,5 +1,5 @@
/* libleet parse URL
* ======================
*
* This is a simple libleet example, which allows you to simply parse a URL.
* It is quite useless, and only really serves as a test for the network request
* wrapper.

View file

@ -19,7 +19,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
if (leet::checkIfUsernameIsAvailable(cred.Username)) {
resp = leet::registerAccount(cred);

View file

@ -77,6 +77,8 @@ class Session : public std::enable_shared_from_this<Session> {
class Listener {
public:
boost::asio::io_context& apiIoc; // only made public to silence a warning
explicit Listener(boost::asio::io_context& ioc, boost::asio::ip::tcp::endpoint Endpoint)
: apiIoc(ioc), apiAcceptor(ioc, Endpoint) {}
@ -85,7 +87,6 @@ class Listener {
}
private:
boost::asio::io_context& apiIoc;
boost::asio::ip::tcp::acceptor apiAcceptor;
void acceptReq() {
@ -117,7 +118,7 @@ const std::string returnRooms(const std::string& Body) {
return ErrorResponse.dump();
}
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
if (nlohmann::json::accept(Body)) {
for (auto& it : Incoming) {
@ -229,7 +230,7 @@ const std::string attemptLogin(const std::string& Body) {
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
}
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
resp = leet::loginAccount(cred);
nlohmann::json jsonResponse;

View file

@ -20,7 +20,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
resp = leet::loginAccount(cred);
@ -28,7 +28,7 @@ int main() {
leet::transID = leet::returnUnixTimestamp();
leet::Sync::syncConfiguration conf;
leet::Sync::SyncConfiguration conf;
leet::Sync::Sync sync = leet::returnSync(resp, conf);
for (auto it : sync.megolmSessions) {

View file

@ -21,7 +21,7 @@ int main() {
cred.deviceID = "libleet test client";
cred.Homeserver = leet::returnServerDiscovery(leet::returnHomeServerFromString(cred.Username));
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse resp;
resp = leet::loginAccount(cred);
@ -29,7 +29,7 @@ int main() {
leet::transID = leet::returnUnixTimestamp();
leet::Sync::syncConfiguration conf;
leet::Sync::SyncConfiguration conf;
leet::Sync::Sync sync = leet::returnSync(resp, conf);
std::ofstream file("output.txt");

View file

@ -29,7 +29,7 @@ int main() {
leet::transID = leet::returnUnixTimestamp();
leet::Sync::syncConfiguration conf;
leet::Sync::SyncConfiguration conf;
leet::Sync::Sync sync = leet::returnSync(resp, conf);
nlohmann::json obj = nlohmann::json::parse(sync.theRequest);

View file

@ -29,24 +29,24 @@ namespace leetCrypto {
/**
* @brief Class used to generate random bytes
*/
class randomBytes {
class RandomBytes {
private:
public:
void *_data;
size_t _length;
randomBytes(size_t length): _data(malloc(length)), _length(length) {
fillWithRandomBytes(_data, _length);
RandomBytes(size_t length): _data(malloc(length)), _length(length) {
fillWithRandomBytes(_data, _length);
}
~randomBytes() {
memset(_data, 0, _length);
free(_data);
~RandomBytes() {
memset(_data, 0, _length);
free(_data);
}
size_t length() const {
return _length;
return _length;
}
void *data() const {
return _data;
void* data() const {
return _data;
}
};
}
@ -143,7 +143,7 @@ namespace leet {
/**
* @brief Class which contains the response from the Matrix homeserver on initial login.
*/
class credentialsResponse { /* Only applies for the login account */
class CredentialsResponse { /* Only applies for the login account */
private:
public:
std::string accessToken{}; // Access token, which will be used to authenticate all future events for this session
@ -192,7 +192,7 @@ namespace leet {
public:
std::string Username{}; // The TURN server username
std::string Password{}; // The TURN server password
int timeToLiveIn{};
int timeToLiveIn{}; // Go figure.
std::vector<std::string> URI{};
};
}
@ -219,7 +219,7 @@ namespace leet {
/**
* @brief Class which represents settings for a single room that should be created.
*/
class roomConfiguration {
class RoomConfiguration {
private:
public:
bool Federate{false};
@ -264,7 +264,7 @@ namespace leet {
/**
* @brief Class which represents a URL preview.
*/
class urlPreview {
class URLPreview {
private:
public:
std::string URL{};
@ -284,7 +284,7 @@ namespace leet {
/**
* @brief Filter configuration, can be used to generate a filter which can be used to find an event ID by functions that make use of it.
*/
class filterConfiguration {
class FilterConfiguration {
private:
public:
std::vector<std::string> notSenders{}; // Senders to exclude
@ -309,7 +309,7 @@ namespace leet {
/**
* @brief Class that represents a user event.
*/
class userEvent {
class UserEvent {
private:
public:
std::string userID{};
@ -322,7 +322,7 @@ namespace leet {
/**
* @brief Class that represents a name event.
*/
class nameEvent {
class NameEvent {
private:
public:
std::string roomID{};
@ -333,13 +333,13 @@ namespace leet {
/**
* @brief Class that represents a room event.
*/
class roomEvent {
class RoomEvent {
private:
public:
/**
* @brief Class that represents an invite event.
*/
class inviteEvent {
class InviteEvent {
private:
public:
std::string roomID{}; // room id to join
@ -358,30 +358,30 @@ namespace leet {
/**
* @brief Class that represents a join event.
*/
class joinEvent {
class JoinEvent {
private:
public:
};
/**
* @brief Class that represents a knock event.
*/
class knockEvent {
class KnockEvent {
private:
public:
};
/**
* @brief Class that represents a leave event.
*/
class leaveEvent {
class LeaveEvent {
private:
public:
};
std::vector<inviteEvent> Invites{};
std::vector<InviteEvent> Invites{};
};
/**
* @brief Class that represents a Megolm session sent in the room */
class megolmSession {
class MegolmSession {
private:
public:
std::string Algorithm{};
@ -397,10 +397,10 @@ namespace leet {
class Sync {
private:
public:
userEvent userEvents{};
nameEvent nameEvents{};
roomEvent roomEvents{};
std::vector<megolmSession> megolmSessions{};
UserEvent userEvents{};
NameEvent nameEvents{};
RoomEvent roomEvents{};
std::vector<MegolmSession> megolmSessions{};
std::string nextBatch{};
std::string theRequest{};
};
@ -408,7 +408,7 @@ namespace leet {
/**
* @brief Class containing settings for a sync call
*/
class syncConfiguration {
class SyncConfiguration {
private:
public:
std::string Since{};
@ -561,10 +561,10 @@ namespace leet {
std::vector<std::string> returnSupportedSpecs();
/**
* @brief Return max upload size limit
* @param credentialsResponse object, used for authentication.
* @param CredentialsResponse object, used for authentication.
* @return Max upload size limit in bytes.
*/
int returnMaxUploadLimit(const User::credentialsResponse& resp);
int returnMaxUploadLimit(const User::CredentialsResponse& resp);
/**
* @brief Check if an error occured.
@ -575,9 +575,9 @@ namespace leet {
/**
* @brief Attempts to create an account on the home server.
* @param cred Credentials object to use for registering
* @return credentialsResponse object, containing the access token among other variables.
* @return CredentialsResponse object, containing the access token among other variables.
*/
User::credentialsResponse registerAccount(const User::Credentials& cred);
User::CredentialsResponse registerAccount(const User::Credentials& cred);
/**
* @brief Check if a registration token is still valid or not.
* @param Token The token that should be validated.
@ -588,15 +588,15 @@ namespace leet {
/**
* @brief Attempts to log in to the home server.
* @param cred Credentials object to use for login
* @return credentialsResponse object, containing the access token among other variables.
* @return CredentialsResponse object, containing the access token among other variables.
*/
User::credentialsResponse loginAccount(const User::Credentials& cred);
User::CredentialsResponse loginAccount(const User::Credentials& cred);
/**
* @brief Refresh an old access token (if a refresh token is available in the object)
* @param resp credentialsResponse object, required for authentication.
* @return Returns a new User::credentialsResponse object based on the parameter.
* @param resp CredentialsResponse object, required for authentication.
* @return Returns a new User::CredentialsResponse object based on the parameter.
*/
User::credentialsResponse refreshAccessToken(User::credentialsResponse& resp);
User::CredentialsResponse refreshAccessToken(User::CredentialsResponse& resp);
/**
* @brief Invalidate an access token
* @param Token Token to invalidate.
@ -604,11 +604,11 @@ namespace leet {
void invalidateAccessToken(const std::string& Token);
/**
* @brief Returns user data in the form of a User::Profile object.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param userID User to get data for.
* @return Returns a User::Profile object containing the user data.
*/
User::Profile getUserData(const User::credentialsResponse& resp, const std::string& userID);
User::Profile getUserData(const User::CredentialsResponse& resp, const std::string& userID);
/**
* @brief Returns a full API URL from a Matrix endpoint.
@ -694,106 +694,106 @@ namespace leet {
/**
* @brief Gets information about a room based on a room ID.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @return Returns a Room object containing room data.
*/
Room::Room returnRoom(const User::credentialsResponse& resp, const Room::Room& room);
Room::Room returnRoom(const User::CredentialsResponse& resp, const Room::Room& room);
/**
* @brief Upgrades a room to a specific room version.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param Version Version integer.
* @return Returns a room with a new room ID.
*/
Room::Room upgradeRoom(const User::credentialsResponse& resp, const Room::Room& room, const int Version);
Room::Room upgradeRoom(const User::CredentialsResponse& resp, const Room::Room& room, const int Version);
/**
* @brief Create a room from a Room::roomConfiguration object.
* @param resp credentialsResponse object, required for authentication.
* @brief Create a room from a Room::RoomConfiguration object.
* @param resp CredentialsResponse object, required for authentication.
* @parma conf Room configuration object, this object should contain room information.
* @return Returns a Room object containing room data.
*/
Room::Room createRoom(const User::credentialsResponse& resp, const Room::roomConfiguration& conf);
Room::Room createRoom(const User::CredentialsResponse& resp, const Room::RoomConfiguration& conf);
/**
* @brief Join a public room or a room that you have been invited to.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param Reason Reason for wanting to join.
*/
void joinRoom(const User::credentialsResponse& resp, const Room::Room& room, const std::string& Reason);
void joinRoom(const User::CredentialsResponse& resp, const Room::Room& room, const std::string& Reason);
/**
* @brief Leave a room you're part of.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param Reason Reason for leaving.
*/
void leaveRoom(const User::credentialsResponse& resp, const Room::Room& room, const std::string& Reason);
void leaveRoom(const User::CredentialsResponse& resp, const Room::Room& room, const std::string& Reason);
/**
* @brief Kick a user from a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param profile Profile object, this object should contain a user ID for the user to kick.
* @param Reason Reason for kicking the user.
*/
void kickUserFromRoom(const User::credentialsResponse& resp, const Room::Room& room, const User::Profile& profile, const std::string& Reason);
void kickUserFromRoom(const User::CredentialsResponse& resp, const Room::Room& room, const User::Profile& profile, const std::string& Reason);
/**
* @brief Ban a user from a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param profile Profile object, this object should contain a user ID for the user to ban.
* @param Reason Reason for banning the user.
*/
void banUserFromRoom(const User::credentialsResponse& resp, const Room::Room& room, const User::Profile& profile, const std::string& Reason);
void banUserFromRoom(const User::CredentialsResponse& resp, const Room::Room& room, const User::Profile& profile, const std::string& Reason);
/**
* @brief Unban a user from a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param profile Profile object, this object should contain a user ID for the user to unban.
* @param Reason Reason for unbanning the user.
*/
void unbanUserFromRoom(const User::credentialsResponse& resp, const Room::Room& room, const User::Profile& profile, const std::string& Reason);
void unbanUserFromRoom(const User::CredentialsResponse& resp, const Room::Room& room, const User::Profile& profile, const std::string& Reason);
/**
* @brief Invite a user to a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param Reason Reason for the invite being sent.
*/
void inviteUserToRoom(const User::credentialsResponse& resp, const Room::Room& room, const std::string& Reason);
void inviteUserToRoom(const User::CredentialsResponse& resp, const Room::Room& room, const std::string& Reason);
/**
* @brief Gets the visibility of a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @return Returns true if the room is visible, otherwise returns false.
*/
bool getVisibilityOfRoom(const User::credentialsResponse& resp, const Room::Room& room);
bool getVisibilityOfRoom(const User::CredentialsResponse& resp, const Room::Room& room);
/**
* @brief Sets the visibility of a room to Visibility
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, this object should contain a room ID.
* @param Visibility Boolean, true means visible, false means hidden.
*/
void setVisibilityOfRoom(const User::credentialsResponse& resp, const Room::Room& room, const bool Visibility);
void setVisibilityOfRoom(const User::CredentialsResponse& resp, const Room::Room& room, const bool Visibility);
/**
* @brief Returns a vector of all rooms your user has joined.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param Limit Max number of rooms to return.
* @return Returns a vector of all rooms your user has joined.
*/
std::vector<Room::Room> returnRooms(const User::credentialsResponse& resp, const int Limit);
std::vector<Room::Room> returnRooms(const User::CredentialsResponse& resp, const int Limit);
/**
* @brief Returns room IDs for all the rooms your user has joined.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @return Returns room IDs for all the rooms your user has joined.
*/
std::vector<Room::Room> returnRoomIDs(const User::credentialsResponse& resp);
std::vector<Room::Room> returnRoomIDs(const User::CredentialsResponse& resp);
/**
* @brief Returns room aliases from a room ID.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param roomID The room to get aliases from.
* @return Returns an std::vector<std::string> containing room aliases.
*/
std::vector<std::string> findRoomAliases(const User::credentialsResponse& resp, const std::string& roomID);
std::vector<std::string> findRoomAliases(const User::CredentialsResponse& resp, const std::string& roomID);
/**
* @brief Resolves a room alias and returns the room ID.
* @param Alias Room alias to find the room ID from.
@ -802,26 +802,26 @@ namespace leet {
std::string findRoomID(const std::string& Alias);
/**
* @brief Removes a room alias from an undefined room ID.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param Alias The room alias to remove. The server will determine the room ID from this alias.
* @return Returns a boolean, true if the room alias was successfully removed, otherwise false.
*/
bool removeRoomAlias(const User::credentialsResponse& resp, const std::string& Alias);
bool removeRoomAlias(const User::CredentialsResponse& resp, const std::string& Alias);
/**
* @brief Returns a vector of all spaces your user has joined.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param Limit Max number of spaces to return.
* @return Returns a vector of all spaces, along with all child rooms your user has joined.
*/
std::vector<Space::Space> returnSpaces(const User::credentialsResponse& resp, const int Limit);
std::vector<Space::Space> returnSpaces(const User::CredentialsResponse& resp, const int Limit);
/**
* @brief Returns a vector of all rooms in a space.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param spaceID Space ID to get rooms from.
* @return Returns a vector of all rooms in the space.
*/
const std::vector<Room::Room> returnRoomsInSpace(const User::credentialsResponse& resp, const std::string& spaceID, const int Limit);
const std::vector<Room::Room> returnRoomsInSpace(const User::CredentialsResponse& resp, const std::string& spaceID, const int Limit);
/**
* @brief Converts an incomplete user ID to a full user ID. (i.e. speedie is converted to @speedie:matrix.org)
@ -838,19 +838,19 @@ namespace leet {
std::string returnUserName(const std::string& userID);
/**
* @brief Returns a vector of all users in a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, the function uses the room ID, which must be set.
* @return Returns a vector of all users in a room.
*/
std::vector<User::Profile> returnUsersInRoom(const User::credentialsResponse& resp, const Room::Room& room);
std::vector<User::Profile> returnUsersInRoom(const User::CredentialsResponse& resp, const Room::Room& room);
/**
* @brief Returns a vector of all devices for a specific user.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param user User vector, each User must have the user ID set.
* @return Returns a vector of all devices for a specific user.
*/
std::vector<User::Device> returnDevicesFromUser(const User::credentialsResponse& resp, const std::vector<User::Profile>& user);
std::vector<User::Device> returnDevicesFromUser(const User::CredentialsResponse& resp, const std::vector<User::Profile>& user);
/**
* @brief Returns a boolean for whether a username is available on the home server or not.
@ -861,79 +861,79 @@ namespace leet {
/**
* @brief Toggles typing in a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param Timeout How long to type for.
* @param Typing Boolean, whether or not we should be typing or not.
* @param room Room to send the event in.
*/
void toggleTyping(const User::credentialsResponse& resp, const int Timeout, const bool Typing, const Room::Room& room);
void toggleTyping(const User::CredentialsResponse& resp, const int Timeout, const bool Typing, const Room::Room& room);
/**
* @brief Sets the read marker position to a specific event
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room to set the read marker in.
* @param fullyReadEvent Event to place the marker at.
* @param readEvent Event to set the read receipt at.
* @param privateReadEvent Event to set the private read receipt at.
*/
void setReadMarkerPosition(const User::credentialsResponse& resp, const Room::Room& room,
void setReadMarkerPosition(const User::CredentialsResponse& resp, const Room::Room& room,
const Event::Event& fullyReadEvent, const Event::Event& readEvent, const Event::Event& privateReadEvent);
/**
* @brief Sends a plain text message to the specified room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, room that the message should be sent in.
* @param msg Event::Message object, the message that should be sent.
*/
void sendMessage(const User::credentialsResponse& resp, const Room::Room& room, const Event::Message& msg);
void sendMessage(const User::CredentialsResponse& resp, const Room::Room& room, const Event::Message& msg);
/**
* @brief Returns a Event::Message vector from a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object, room that the messages should be retrieved from.
* @param messageCount Number of messages to retrieve from the room.
* @return Returns a Event::Message vector which represents the retrieved messages.
*/
std::vector<Event::Message> returnMessages(const User::credentialsResponse& resp, const Room::Room& room, const int messageCount);
std::vector<Event::Message> returnMessages(const User::CredentialsResponse& resp, const Room::Room& room, const int messageCount);
/**
* @brief Returns a filter ID which can be used when requesting data.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param filter Filter configuration.
* @return Returns a filter ID which can be used when requesting data.
*/
Filter::Filter returnFilter(const User::credentialsResponse& resp, const Filter::filterConfiguration& filter);
Filter::Filter returnFilter(const User::CredentialsResponse& resp, const Filter::FilterConfiguration& filter);
/**
* @brief Uploads a file to the Matrix server(s).
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param File Path to the file which should be uploaded.
* @return Returns an Attachment::Attachment object containing an mxc:// Matrix URL.
*/
Attachment::Attachment uploadFile(const User::credentialsResponse& resp, const std::string& File);
Attachment::Attachment uploadFile(const User::CredentialsResponse& resp, const std::string& File);
/**
* @brief Downloads a file from the Matrix server.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param File Attachment object containing an mxc:// URL to download from.
* @param outputFile Output file path.
* @return Returns true if it was downloaded successfully, otherwise false is returned.
*/
bool downloadFile(const User::credentialsResponse& resp, const Attachment::Attachment& Attachment, const std::string& outputFile);
bool downloadFile(const User::CredentialsResponse& resp, const Attachment::Attachment& Attachment, const std::string& outputFile);
/**
* @brief Get a URL preview by calling a Matrix media endpoint. Do not call in encrypted rooms.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param URL The URL to get a preview for.
* @param time The point in time to get a preview for. Specify 0 if you want the latest preview.
* @return Returns a urlPreview object containing the response data.
* @return Returns a URLPreview object containing the response data.
*/
URL::urlPreview getURLPreview(const User::credentialsResponse& resp, const std::string& URL, const int64_t time);
URL::URLPreview getURLPreview(const User::CredentialsResponse& resp, const std::string& URL, const int64_t time);
/**
* @brief Gets a download link for an attachment from the Matrix server.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param File Attachment object containing an mxc:// URL to download from.
* @return Returns a URL in the form of an std::string
*/
std::string decodeFile(const User::credentialsResponse& resp, const Attachment::Attachment& Attachment);
std::string decodeFile(const User::CredentialsResponse& resp, const Attachment::Attachment& Attachment);
/**
* @brief Gets the Unix timestamp
@ -942,72 +942,72 @@ namespace leet {
int64_t returnUnixTimestamp();
/**
* @brief Get an event from a Unix timestamp.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object to get event(s) from.
* @param Timestamp Unix timestamp for the event.
* @param Direction Boolean which specifies which direction to search for events in. true means forward while false means backwards.
* @return Returns the event. If none could be found, an empty object is simply returned instead.
*/
Event::Event returnEventFromTimestamp(const User::credentialsResponse& resp, const Room::Room& room, const int64_t Timestamp, const bool Direction);
Event::Event returnEventFromTimestamp(const User::CredentialsResponse& resp, const Room::Room& room, const int64_t Timestamp, const bool Direction);
/**
* @brief Gets the latest event sent in the room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object to get an event from.
*
* Note that this function is just a convenient wrapper for returnEventFromTimestamp()
*/
Event::Event returnLatestEvent(const User::credentialsResponse& resp, const Room::Room& room);
Event::Event returnLatestEvent(const User::CredentialsResponse& resp, const Room::Room& room);
/**
* @brief Get a state from a room ID, type and state key
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object to get an event from.
* @param eventType Event type to get.
* @param stateKey State key, most of the time you can just specify an empty string.
* @return Returns an Event object.
*/
Event::Event getStateFromType(const User::credentialsResponse& resp, const Room::Room& room, const std::string& eventType, const std::string& stateKey);
Event::Event getStateFromType(const User::CredentialsResponse& resp, const Room::Room& room, const std::string& eventType, const std::string& stateKey);
/**
* @brief Set a state from a room ID, type and state key. If a state already exists, it will be replaced.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object to get an event from.
* @param eventType Event type to get.
* @param stateKey State key, most of the time you can just specify an empty string.
* @param Body The body to include in the state.
* @return Returns an Event object.
*/
Event::Event setStateFromType(const User::credentialsResponse& resp, const Room::Room& room, const std::string& eventType, const std::string& stateKey, const std::string& Body);
Event::Event setStateFromType(const User::CredentialsResponse& resp, const Room::Room& room, const std::string& eventType, const std::string& stateKey, const std::string& Body);
/**
* @brief Redact an event sent in a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room object to get an event from.
* @param event The event to redact.
* @param Reason Reason for the redaction.
*/
void redactEvent(const User::credentialsResponse& resp, const Room::Room& room, const Event::Event& event, const std::string& Reason);
void redactEvent(const User::CredentialsResponse& resp, const Room::Room& room, const Event::Event& event, const std::string& Reason);
/**
* @brief Report an event to the home server owner.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room Room the event can be found in.
* @param event The event to report.
* @param Reason Reason for the report being made.
* @param Score A score between -100 and 0 with -100 being the most offensive and 0 is inoffensive. If the integer is not in this range 0 will be used.
*/
void reportEvent(const User::credentialsResponse& resp, const Room::Room& room, const Event::Event& event, const std::string& Reason, const int Score);
void reportEvent(const User::CredentialsResponse& resp, const Room::Room& room, const Event::Event& event, const std::string& Reason, const int Score);
/**
* @brief Get sync information from the server.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @return Returns a Sync object with the fields.
*/
Sync::Sync returnSync(const User::credentialsResponse& resp, const Sync::syncConfiguration& conf);
Sync::Sync returnSync(const User::CredentialsResponse& resp, const Sync::SyncConfiguration& conf);
/**
* @brief Get TURN server credentials
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @return Returns a VOIP::Credentials object.
*/
VOIP::Credentials returnTurnCredentials(const User::credentialsResponse& resp);
VOIP::Credentials returnTurnCredentials(const User::CredentialsResponse& resp);
#ifndef LEET_NO_ENCRYPTION
/**
@ -1091,27 +1091,27 @@ namespace leet {
/**
* @brief Uploads the device keys
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
*/
void upload(const leet::User::credentialsResponse& resp);
void upload(const leet::User::CredentialsResponse& resp);
/**
* @brief Creates a session with one or more users in the current room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param room The room to send and create the event in.
* @param users Vector of users to create a session with.
*/
void createSession(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::vector<leet::User::Profile>& users);
void createSession(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::vector<leet::User::Profile>& users);
/**
* @brief Encrypt a message.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param message Message to encrypt.
* @return Returns a json string containing the encrypted cipher text.
*
* Returns string json containing encrypted cipher text, which can then be uploaded to the server as an event
*/
std::string encryptMessage(const leet::User::credentialsResponse& resp, const std::string& message);
std::string encryptMessage(const leet::User::CredentialsResponse& resp, const std::string& message);
/**
* @brief Clean up by clearing the Olm account.
@ -1155,27 +1155,27 @@ namespace leet {
Encryption initEncryptionFromPickle(const std::string& pickleKey, const std::string& pickleData);
/**
* @brief Function that uploads encryption keys for your account to the Matrix home server.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param enc Encryption object.
* @return Returns an Encryption object.
*/
Encryption uploadKeys(const User::credentialsResponse& resp, Encryption& enc);
Encryption uploadKeys(const User::CredentialsResponse& resp, Encryption& enc);
/**
* @brief Creates a session in a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param enc Encryption object.
* @param room Room to create a session in.
* @return Returns an Encryption object.
*/
Encryption createSessionInRoom(const User::credentialsResponse& resp, Encryption& enc, const Room::Room& room);
Encryption createSessionInRoom(const User::CredentialsResponse& resp, Encryption& enc, const Room::Room& room);
/**
* @brief Sends an encrypted message to a room.
* @param resp credentialsResponse object, required for authentication.
* @param resp CredentialsResponse object, required for authentication.
* @param enc Encryption object.
* @param room Room to create a session in.
* @param msg Message to send.
*/
void sendEncryptedMessage(const User::credentialsResponse& resp, Encryption& enc, const Room::Room& room, const Event::Message& msg);
void sendEncryptedMessage(const User::CredentialsResponse& resp, Encryption& enc, const Room::Room& room, const Event::Message& msg);
#endif // #ifndef LEET_NO_ENCRYPTION
}

5
setup.ps1 Executable file
View file

@ -0,0 +1,5 @@
if (-Not (Test-Path "build")) {
meson setup build
}
ninja -C build/

3
setup.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
[ ! -d "build" ] && meson setup build/ --prefix=/usr
ninja -C build/

View file

@ -20,9 +20,9 @@
#include <crypto/olm.hpp>
namespace leetFunction { // contains functions that are used in libleet API functions
void getSessionsFromSync(const leet::User::credentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it);
void getRoomEventsFromSync(const leet::User::credentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it);
void getInvitesFromSync(const leet::User::credentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it);
void getSessionsFromSync(const leet::User::CredentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it);
void getRoomEventsFromSync(const leet::User::CredentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it);
void getInvitesFromSync(const leet::User::CredentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it);
}
void leet::olmAccount::createAccount() {
@ -34,9 +34,9 @@ void leet::olmAccount::createAccount() {
throw std::runtime_error{ "createAccount(): Cannot allocate memory because it is already allocated." };
}
leetCrypto::randomBytes randomBytes(olm_create_account_random_length(leetOlm::Account));
leetCrypto::RandomBytes RandomBytes(olm_create_account_random_length(leetOlm::Account));
if (olm_create_account(leetOlm::Account, randomBytes.data(), randomBytes.length()) == olm_error()) {
if (olm_create_account(leetOlm::Account, RandomBytes.data(), RandomBytes.length()) == olm_error()) {
throw std::runtime_error("olm_create_account()");
}
}
@ -59,9 +59,9 @@ void leet::olmAccount::createMegolmSession() {
} else {
throw std::runtime_error{ "createMegolmSession(): Cannot allocate memory because it is already allocated. (1)" };
}
leetCrypto::randomBytes randomBytesSession(olm_init_outbound_group_session_random_length(leetOlm::megolmSession));
leetCrypto::RandomBytes RandomBytesSession(olm_init_outbound_group_session_random_length(leetOlm::megolmSession));
if (olm_init_outbound_group_session(leetOlm::megolmSession, static_cast<uint8_t* >(randomBytesSession.data()), randomBytesSession.length()) == olm_error()) {
if (olm_init_outbound_group_session(leetOlm::megolmSession, static_cast<uint8_t* >(RandomBytesSession.data()), RandomBytesSession.length()) == olm_error()) {
free(megolmSessionMemory);
megolmSessionMemoryAllocated = false;
throw std::runtime_error("olm_init_outbound_group_session()");
@ -152,7 +152,7 @@ void leet::olmAccount::createIdentity() {
identityMemoryAllocated = false;
}
void leet::olmAccount::upload(const leet::User::credentialsResponse& resp) {
void leet::olmAccount::upload(const leet::User::CredentialsResponse& resp) {
if (!curve25519.compare("")) {
throw std::runtime_error{ "upload(): Identity not allocated." };
}
@ -248,9 +248,9 @@ void leet::olmAccount::upload(const leet::User::credentialsResponse& resp) {
if (keysNeeded > keysAvailable) {
int keysToGenerate = keysNeeded - keysAvailable;
std::size_t otkRandomLength = olm_account_generate_one_time_keys_random_length(leetOlm::Account, keysToGenerate);
leetCrypto::randomBytes randomBytes(otkRandomLength);
leetCrypto::RandomBytes RandomBytes(otkRandomLength);
if (olm_account_generate_one_time_keys(leetOlm::Account, keysToGenerate, randomBytes.data(), randomBytes.length()) == olm_error()) {
if (olm_account_generate_one_time_keys(leetOlm::Account, keysToGenerate, RandomBytes.data(), RandomBytes.length()) == olm_error()) {
throw std::runtime_error("olm_account_generate_one_time_keys()");
}
@ -317,7 +317,7 @@ void leet::olmAccount::upload(const leet::User::credentialsResponse& resp) {
}
}
void leet::olmAccount::createSession(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::vector<leet::User::Profile>& users) {
void leet::olmAccount::createSession(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::vector<leet::User::Profile>& users) {
if (!megolmSessionMemoryAllocated) {
throw std::runtime_error{ "createSession(): Megolm session not allocated." };
}
@ -427,9 +427,9 @@ void leet::olmAccount::createSession(const leet::User::credentialsResponse& resp
// Store the session
leetOlm::olmSessions[output.userID+output.curve25519Key+output.deviceID] = Session;
leetCrypto::randomBytes randomBytes(olm_create_outbound_session_random_length(Session));
leetCrypto::RandomBytes RandomBytes(olm_create_outbound_session_random_length(Session));
if (olm_create_outbound_session(Session, leetOlm::Account, output.curve25519Key.data(), output.curve25519Key.length(), Otk.data(), Otk.length(), randomBytes.data(), randomBytes.length()) == olm_error()) {
if (olm_create_outbound_session(Session, leetOlm::Account, output.curve25519Key.data(), output.curve25519Key.length(), Otk.data(), Otk.length(), RandomBytes.data(), RandomBytes.length()) == olm_error()) {
throw std::runtime_error("olm_create_outbound_session()");
}
@ -452,11 +452,11 @@ void leet::olmAccount::createSession(const leet::User::credentialsResponse& resp
const std::string roomKeyMsg = roomKey.dump();
leetCrypto::randomBytes randomBytesEncrypt(olm_encrypt_random_length(Session));
leetCrypto::RandomBytes RandomBytesEncrypt(olm_encrypt_random_length(Session));
std::size_t cipherTextLength = olm_encrypt_message_length(Session, roomKeyMsg.length());
char* cipherText = (char* )malloc(cipherTextLength + 1);
tSize = olm_encrypt(Session, roomKeyMsg.data(), roomKeyMsg.length(), randomBytesEncrypt.data(), randomBytesEncrypt.length(), cipherText, cipherTextLength);
tSize = olm_encrypt(Session, roomKeyMsg.data(), roomKeyMsg.length(), RandomBytesEncrypt.data(), RandomBytesEncrypt.length(), cipherText, cipherTextLength);
if (tSize == olm_error()) {
free(cipherText);
@ -490,7 +490,7 @@ void leet::olmAccount::createSession(const leet::User::credentialsResponse& resp
utilityMemoryAllocated = false;
}
std::string leet::olmAccount::encryptMessage(const leet::User::credentialsResponse& resp, const std::string& message) {
std::string leet::olmAccount::encryptMessage(const leet::User::CredentialsResponse& resp, const std::string& message) {
std::size_t cipherTextLength = olm_group_encrypt_message_length(leetOlm::megolmSession, message.length());
char* cipherText = (char* )malloc(cipherTextLength + 1);
std::size_t tSize = olm_group_encrypt(leetOlm::megolmSession, (uint8_t* )message.data(), message.length(), (uint8_t* )cipherText, cipherTextLength);
@ -563,7 +563,7 @@ leet::Encryption leet::initEncryptionFromPickle(const std::string& pickleKey, co
return enc;
}
leet::Encryption leet::uploadKeys(const leet::User::credentialsResponse& resp, leet::Encryption& enc) {
leet::Encryption leet::uploadKeys(const leet::User::CredentialsResponse& resp, leet::Encryption& enc) {
if (!enc.hasCreatedAccount) {
throw std::runtime_error{ "olmAccount: Account has not been created." };
}
@ -578,7 +578,7 @@ leet::Encryption leet::uploadKeys(const leet::User::credentialsResponse& resp, l
return enc;
}
leet::Encryption leet::createSessionInRoom(const leet::User::credentialsResponse& resp, leet::Encryption& enc, const leet::Room::Room& room) {
leet::Encryption leet::createSessionInRoom(const leet::User::CredentialsResponse& resp, leet::Encryption& enc, const leet::Room::Room& room) {
if (!enc.hasCreatedAccount) {
throw std::runtime_error{ "olmAccount: Account has not been created." };
}
@ -630,7 +630,7 @@ void leet::invalidateAccessToken(const std::string& Token) {
leet::invokeRequest_Post(leet::getAPI("/_matrix/client/v3/logout"), Token);
}
leet::User::credentialsResponse leet::refreshAccessToken(leet::User::credentialsResponse& resp) {
leet::User::CredentialsResponse leet::refreshAccessToken(leet::User::CredentialsResponse& resp) {
if (!resp.refreshToken.compare("")) {
return resp;
}
@ -690,8 +690,8 @@ bool leet::checkRegistrationTokenValidity(const std::string& Token) {
return false;
}
leet::User::credentialsResponse leet::registerAccount(const leet::User::Credentials& cred) {
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse leet::registerAccount(const leet::User::Credentials& cred) {
leet::User::CredentialsResponse resp;
std::string theUsername = cred.Username;
@ -745,8 +745,8 @@ leet::User::credentialsResponse leet::registerAccount(const leet::User::Credenti
return resp;
}
leet::User::credentialsResponse leet::loginAccount(const leet::User::Credentials& cred) {
leet::User::credentialsResponse resp;
leet::User::CredentialsResponse leet::loginAccount(const leet::User::Credentials& cred) {
leet::User::CredentialsResponse resp;
nlohmann::json list;
std::string actualType{};
@ -1080,7 +1080,7 @@ std::string leet::returnUserName(const std::string& userID) {
return str;
}
leet::User::Profile leet::getUserData(const leet::User::credentialsResponse& resp, const std::string& userID) {
leet::User::Profile leet::getUserData(const leet::User::CredentialsResponse& resp, const std::string& userID) {
leet::errorCode = 0;
leet::User::Profile profile;
@ -1126,7 +1126,7 @@ leet::User::Profile leet::getUserData(const leet::User::credentialsResponse& res
return profile;
}
std::vector<leet::User::Device> leet::returnDevicesFromUser(const leet::User::credentialsResponse& resp, const std::vector<leet::User::Profile>& user) {
std::vector<leet::User::Device> leet::returnDevicesFromUser(const leet::User::CredentialsResponse& resp, const std::vector<leet::User::Profile>& user) {
std::vector<leet::User::Device> devices;
nlohmann::json Body;
@ -1229,7 +1229,7 @@ bool leet::checkIfUsernameIsAvailable(const std::string& Username) {
return false;
}
std::vector<leet::User::Profile> leet::returnUsersInRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room) {
std::vector<leet::User::Profile> leet::returnUsersInRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room) {
std::vector<leet::User::Profile> vector;
const std::string Output = leet::invokeRequest_Get(leet::getAPI("/_matrix/client/v3/rooms/" + room.roomID + "/joined_members"), resp.accessToken);
@ -1262,7 +1262,7 @@ std::vector<leet::User::Profile> leet::returnUsersInRoom(const leet::User::crede
return vector;
}
std::vector<std::string> leet::findRoomAliases(const leet::User::credentialsResponse& resp, const std::string& roomID) {
std::vector<std::string> leet::findRoomAliases(const leet::User::CredentialsResponse& resp, const std::string& roomID) {
std::vector<std::string> ret;
const std::string Output = leet::invokeRequest_Get(leet::getAPI("/_matrix/client/v3/rooms/" + roomID + "/aliases"), resp.accessToken);
@ -1326,7 +1326,7 @@ std::string leet::findRoomID(const std::string& Alias) {
return "";
}
bool leet::removeRoomAlias(const leet::User::credentialsResponse& resp, const std::string& Alias) {
bool leet::removeRoomAlias(const leet::User::CredentialsResponse& resp, const std::string& Alias) {
std::string ret = Alias;
leet::errorCode = 0;
@ -1364,7 +1364,7 @@ bool leet::removeRoomAlias(const leet::User::credentialsResponse& resp, const st
return false;
}
std::vector<leet::Room::Room> leet::returnRooms(const leet::User::credentialsResponse& resp, const int Limit) {
std::vector<leet::Room::Room> leet::returnRooms(const leet::User::CredentialsResponse& resp, const int Limit) {
std::vector<leet::Room::Room> vector;
std::vector<leet::Room::Room> vectorWithVal;
@ -1394,7 +1394,7 @@ std::vector<leet::Room::Room> leet::returnRooms(const leet::User::credentialsRes
return vectorWithVal;
}
leet::Room::Room leet::returnRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room) {
leet::Room::Room leet::returnRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room) {
leet::Room::Room theRoom;
nlohmann::json returnOutput;
@ -1422,7 +1422,7 @@ leet::Room::Room leet::returnRoom(const leet::User::credentialsResponse& resp, c
return theRoom;
}
leet::Room::Room leet::upgradeRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const int Version) {
leet::Room::Room leet::upgradeRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const int Version) {
const std::string APIUrl { "/_matrix/client/v3/rooms/" + room.roomID + "/upgrade" };
nlohmann::json body;
@ -1457,7 +1457,7 @@ leet::Room::Room leet::upgradeRoom(const leet::User::credentialsResponse& resp,
return room;
}
leet::Room::Room leet::createRoom(const leet::User::credentialsResponse& resp, const leet::Room::roomConfiguration& conf) {
leet::Room::Room leet::createRoom(const leet::User::CredentialsResponse& resp, const leet::Room::RoomConfiguration& conf) {
leet::Room::Room theRoom;
nlohmann::json theJson;
@ -1495,7 +1495,7 @@ leet::Room::Room leet::createRoom(const leet::User::credentialsResponse& resp, c
return leet::returnRoom(resp, theRoom);
}
std::vector<leet::Room::Room> leet::returnRoomIDs(const leet::User::credentialsResponse& resp) {
std::vector<leet::Room::Room> leet::returnRoomIDs(const leet::User::CredentialsResponse& resp) {
std::vector<leet::Room::Room> vector;
const std::string Output = leet::invokeRequest_Get(leet::getAPI("/_matrix/client/v3/joined_rooms"), resp.accessToken);
@ -1518,7 +1518,7 @@ std::vector<leet::Room::Room> leet::returnRoomIDs(const leet::User::credentialsR
return vector;
}
const std::vector<leet::Room::Room> leet::returnRoomsInSpace(const leet::User::credentialsResponse& resp, const std::string& spaceID, const int Limit) {
const std::vector<leet::Room::Room> leet::returnRoomsInSpace(const leet::User::CredentialsResponse& resp, const std::string& spaceID, const int Limit) {
std::vector<leet::Room::Room> rooms;
if (spaceID[0] != '!') {
return rooms;
@ -1555,7 +1555,7 @@ const std::vector<leet::Room::Room> leet::returnRoomsInSpace(const leet::User::c
return rooms;
}
std::vector<leet::Space::Space> leet::returnSpaces(const leet::User::credentialsResponse& resp, const int Limit) {
std::vector<leet::Space::Space> leet::returnSpaces(const leet::User::CredentialsResponse& resp, const int Limit) {
std::vector<leet::Space::Space> spaces;
std::vector<leet::Room::Room> rooms = leet::returnRoomIDs(resp);
@ -1590,7 +1590,7 @@ std::vector<leet::Space::Space> leet::returnSpaces(const leet::User::credentials
return spaces;
}
void leet::toggleTyping(const leet::User::credentialsResponse& resp, const int Timeout, const bool Typing, const leet::Room::Room& room) {
void leet::toggleTyping(const leet::User::CredentialsResponse& resp, const int Timeout, const bool Typing, const leet::Room::Room& room) {
nlohmann::json list;
list["timeout"] = Timeout;
@ -1617,7 +1617,7 @@ void leet::toggleTyping(const leet::User::credentialsResponse& resp, const int T
}
}
void leet::inviteUserToRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::string& Reason) {
void leet::inviteUserToRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::string& Reason) {
nlohmann::json request;
request["reason"] = Reason;
@ -1643,7 +1643,7 @@ void leet::inviteUserToRoom(const leet::User::credentialsResponse& resp, const l
}
}
void leet::joinRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::string& Reason) {
void leet::joinRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::string& Reason) {
nlohmann::json body;
if (!Reason.compare("")) {
@ -1673,7 +1673,7 @@ void leet::joinRoom(const leet::User::credentialsResponse& resp, const leet::Roo
// You may want to refresh your room list and call /sync after this
}
void leet::leaveRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::string& Reason) {
void leet::leaveRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::string& Reason) {
nlohmann::json body;
if (!Reason.compare("")) {
@ -1701,7 +1701,7 @@ void leet::leaveRoom(const leet::User::credentialsResponse& resp, const leet::Ro
}
}
void leet::kickUserFromRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const leet::User::Profile& profile, const std::string& Reason) {
void leet::kickUserFromRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const leet::User::Profile& profile, const std::string& Reason) {
nlohmann::json body;
if (!Reason.compare("")) {
@ -1731,7 +1731,7 @@ void leet::kickUserFromRoom(const leet::User::credentialsResponse& resp, const l
}
}
void leet::banUserFromRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const leet::User::Profile& profile, const std::string& Reason) {
void leet::banUserFromRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const leet::User::Profile& profile, const std::string& Reason) {
nlohmann::json body;
if (!Reason.compare("")) {
@ -1761,7 +1761,7 @@ void leet::banUserFromRoom(const leet::User::credentialsResponse& resp, const le
}
}
void leet::unbanUserFromRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const leet::User::Profile& profile, const std::string& Reason) {
void leet::unbanUserFromRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const leet::User::Profile& profile, const std::string& Reason) {
nlohmann::json body;
if (!Reason.compare("")) {
@ -1791,7 +1791,7 @@ void leet::unbanUserFromRoom(const leet::User::credentialsResponse& resp, const
}
}
bool leet::getVisibilityOfRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room) {
bool leet::getVisibilityOfRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room) {
const std::string Output { leet::invokeRequest_Get(leet::getAPI("/_matrix/client/v3/directory/list/room/" + room.roomID), resp.accessToken) };
nlohmann::json reqOutput;
@ -1822,7 +1822,7 @@ bool leet::getVisibilityOfRoom(const leet::User::credentialsResponse& resp, cons
return false;
}
void leet::setVisibilityOfRoom(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const bool Visibility) {
void leet::setVisibilityOfRoom(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const bool Visibility) {
nlohmann::json body;
body["visibility"] = Visibility ? "public" : "private";
@ -1848,7 +1848,7 @@ void leet::setVisibilityOfRoom(const leet::User::credentialsResponse& resp, cons
}
}
void leet::setReadMarkerPosition(const leet::User::credentialsResponse& resp, const leet::Room::Room& room,
void leet::setReadMarkerPosition(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room,
const leet::Event::Event& fullyReadEvent, const leet::Event::Event& readEvent, const leet::Event::Event& privateReadEvent) {
nlohmann::json body;
@ -1924,7 +1924,7 @@ bool leet::loadTransID(const std::string& File) {
return (leet::transID = leet::loadFromFile<int>(File));
}
leet::Attachment::Attachment leet::uploadFile(const leet::User::credentialsResponse& resp, const std::string& File) {
leet::Attachment::Attachment leet::uploadFile(const leet::User::CredentialsResponse& resp, const std::string& File) {
leet::Attachment::Attachment theAttachment;
const std::string Output = leet::invokeRequest_Post_File(leet::getAPI("/_matrix/media/v3/upload"), File, resp.accessToken);
@ -1955,7 +1955,7 @@ leet::Attachment::Attachment leet::uploadFile(const leet::User::credentialsRespo
return theAttachment;
}
std::string leet::decodeFile(const leet::User::credentialsResponse& resp, const leet::Attachment::Attachment& Attachment) {
std::string leet::decodeFile(const leet::User::CredentialsResponse& resp, const leet::Attachment::Attachment& Attachment) {
std::string Server{};
std::string ID{};
std::string File{Attachment.URL};
@ -1977,7 +1977,7 @@ std::string leet::decodeFile(const leet::User::credentialsResponse& resp, const
return leet::getAPI("/_matrix/media/v3/download/" + Server + "/" + ID + "?allow_redirect=false");
}
bool leet::downloadFile(const leet::User::credentialsResponse& resp, const leet::Attachment::Attachment& Attachment, const std::string& outputFile) {
bool leet::downloadFile(const leet::User::CredentialsResponse& resp, const leet::Attachment::Attachment& Attachment, const std::string& outputFile) {
std::string Server{};
std::string ID{};
std::string File{Attachment.URL};
@ -2029,8 +2029,8 @@ bool leet::downloadFile(const leet::User::credentialsResponse& resp, const leet:
return request.downloadFile();
}
leet::URL::urlPreview leet::getURLPreview(const leet::User::credentialsResponse& resp, const std::string& URL, const int64_t time) {
leet::URL::urlPreview preview;
leet::URL::URLPreview leet::getURLPreview(const leet::User::CredentialsResponse& resp, const std::string& URL, const int64_t time) {
leet::URL::URLPreview preview;
const std::string Output { leet::invokeRequest_Get(leet::getAPI("/_matrix/media/v3/preview_url?ts=" + std::to_string(time) + "&url=" + URL), resp.accessToken) };
nlohmann::json reqOutput;
@ -2061,7 +2061,7 @@ int64_t leet::returnUnixTimestamp() {
return std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
}
leet::Event::Event leet::returnEventFromTimestamp(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const int64_t Timestamp, const bool Direction) {
leet::Event::Event leet::returnEventFromTimestamp(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const int64_t Timestamp, const bool Direction) {
leet::Event::Event event;
std::string Dir = Direction ? "f" : "b";
@ -2091,11 +2091,11 @@ leet::Event::Event leet::returnEventFromTimestamp(const leet::User::credentialsR
return event;
}
leet::Event::Event leet::returnLatestEvent(const leet::User::credentialsResponse& resp, const leet::Room::Room& room) {
leet::Event::Event leet::returnLatestEvent(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room) {
return leet::returnEventFromTimestamp(resp, room, leet::returnUnixTimestamp(), true);
}
void leet::redactEvent(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const leet::Event::Event& event, const std::string& Reason) {
void leet::redactEvent(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const leet::Event::Event& event, const std::string& Reason) {
nlohmann::json body;
@ -2125,7 +2125,7 @@ void leet::redactEvent(const leet::User::credentialsResponse& resp, const leet::
}
void leet::reportEvent(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const leet::Event::Event& event, const std::string& Reason, const int Score) {
void leet::reportEvent(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const leet::Event::Event& event, const std::string& Reason, const int Score) {
const std::string APIUrl { "/_matrix/client/v3/rooms/" + room.roomID + "/report/" + event.eventID };
nlohmann::json body;
@ -2155,7 +2155,7 @@ void leet::reportEvent(const leet::User::credentialsResponse& resp, const leet::
}
}
void leet::sendMessage(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const leet::Event::Message& msg) {
void leet::sendMessage(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const leet::Event::Message& msg) {
const int transID { leet::transID };
const std::string eventType { "m.room.message" };
const std::string APIUrl { "/_matrix/client/v3/rooms/" + room.roomID + "/send/" + eventType + "/" + std::to_string(transID) };
@ -2277,7 +2277,7 @@ void leet::sendMessage(const leet::User::credentialsResponse& resp, const leet::
}
#ifndef LEET_NO_ENCRYPTION
void leet::sendEncryptedMessage(const leet::User::credentialsResponse& resp, leet::Encryption& enc, const leet::Room::Room& room, const leet::Event::Message& msg) {
void leet::sendEncryptedMessage(const leet::User::CredentialsResponse& resp, leet::Encryption& enc, const leet::Room::Room& room, const leet::Event::Message& msg) {
const int transID { leet::transID };
const std::string eventType { "m.room.encrypted" };
const std::string APIUrl { "/_matrix/client/v3/rooms/" + room.roomID + "/send/" + eventType + "/" + std::to_string(transID) };
@ -2330,7 +2330,7 @@ void leet::sendEncryptedMessage(const leet::User::credentialsResponse& resp, lee
}
#endif
leet::Event::Event leet::getStateFromType(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::string& eventType, const std::string& stateKey) {
leet::Event::Event leet::getStateFromType(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::string& eventType, const std::string& stateKey) {
leet::Event::Event event;
leet::errorCode = 0;
const std::string Output { leet::invokeRequest_Get(leet::getAPI("/_matrix/client/v3/rooms/" + room.roomID + "/state/" + eventType + "/" + stateKey), resp.accessToken) };
@ -2361,7 +2361,7 @@ leet::Event::Event leet::getStateFromType(const leet::User::credentialsResponse&
return event;
}
leet::Event::Event leet::setStateFromType(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const std::string& eventType, const std::string& stateKey, const std::string& Body) {
leet::Event::Event leet::setStateFromType(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const std::string& eventType, const std::string& stateKey, const std::string& Body) {
leet::Event::Event event;
leet::errorCode = 0;
const std::string Output { leet::invokeRequest_Put(leet::getAPI("/_matrix/client/v3/rooms/" + room.roomID + "/state/" + eventType + "/" + stateKey), Body, resp.accessToken) };
@ -2389,7 +2389,7 @@ leet::Event::Event leet::setStateFromType(const leet::User::credentialsResponse&
return event;
}
std::vector<leet::Event::Message> leet::returnMessages(const leet::User::credentialsResponse& resp, const leet::Room::Room& room, const int messageCount) {
std::vector<leet::Event::Message> leet::returnMessages(const leet::User::CredentialsResponse& resp, const leet::Room::Room& room, const int messageCount) {
std::vector<leet::Event::Message> vector;
const std::string APIUrl { "/_matrix/client/v3/rooms/" + room.roomID + "/messages?dir=b&limit=" + std::to_string(messageCount) };
@ -2455,7 +2455,7 @@ std::vector<leet::Event::Message> leet::returnMessages(const leet::User::credent
return vector;
}
leet::Filter::Filter leet::returnFilter(const leet::User::credentialsResponse& resp, const leet::Filter::filterConfiguration& filter) {
leet::Filter::Filter leet::returnFilter(const leet::User::CredentialsResponse& resp, const leet::Filter::FilterConfiguration& filter) {
leet::Filter::Filter retFilter;
const std::string APIUrl { "/_matrix/client/v3/user/" + resp.userID + "/filter" };
@ -2500,14 +2500,14 @@ leet::Filter::Filter leet::returnFilter(const leet::User::credentialsResponse& r
return retFilter;
}
void leetFunction::getSessionsFromSync(const leet::User::credentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it) {
void leetFunction::getSessionsFromSync(const leet::User::CredentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it) {
if (!it["to_device"]["events"].is_array()) {
return;
}
for (auto& itEvent : it["to_device"]["events"]) {
leet::errorCode = 0;
leet::Sync::megolmSession megolmSession;
leet::Sync::MegolmSession megolmSession;
if (itEvent["content"]["sender_key"].is_string()) {
megolmSession.senderKey = itEvent["content"]["sender_key"];
@ -2539,7 +2539,7 @@ void leetFunction::getSessionsFromSync(const leet::User::credentialsResponse& re
}
}
void leetFunction::getInvitesFromSync(const leet::User::credentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it) {
void leetFunction::getInvitesFromSync(const leet::User::CredentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it) {
if (it["invite"].is_null()) {
return;
}
@ -2549,7 +2549,7 @@ void leetFunction::getInvitesFromSync(const leet::User::credentialsResponse& res
continue;
}
leet::Sync::roomEvent::inviteEvent theInviteEvent{};
leet::Sync::RoomEvent::InviteEvent theInviteEvent{};
theInviteEvent.Encrypted = false; // sane default
@ -2619,7 +2619,7 @@ void leetFunction::getInvitesFromSync(const leet::User::credentialsResponse& res
}
}
void leetFunction::getRoomEventsFromSync(const leet::User::credentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it) {
void leetFunction::getRoomEventsFromSync(const leet::User::CredentialsResponse& resp, leet::Sync::Sync& sync, nlohmann::json& it) {
if (it["rooms"].is_null()) {
return;
}
@ -2627,7 +2627,7 @@ void leetFunction::getRoomEventsFromSync(const leet::User::credentialsResponse&
leetFunction::getInvitesFromSync(resp, sync, it["rooms"]);
}
leet::Sync::Sync leet::returnSync(const leet::User::credentialsResponse& resp, const leet::Sync::syncConfiguration& conf) {
leet::Sync::Sync leet::returnSync(const leet::User::CredentialsResponse& resp, const leet::Sync::SyncConfiguration& conf) {
leet::Sync::Sync sync{};
std::string presenceString{"offline"};
@ -2676,7 +2676,7 @@ leet::Sync::Sync leet::returnSync(const leet::User::credentialsResponse& resp, c
return sync;
}
leet::VOIP::Credentials leet::returnTurnCredentials(const leet::User::credentialsResponse& resp) {
leet::VOIP::Credentials leet::returnTurnCredentials(const leet::User::CredentialsResponse& resp) {
leet::VOIP::Credentials cred;
const std::string Output { leet::invokeRequest_Get(leet::getAPI("/_matrix/client/v3/voip/turnServer"), resp.accessToken) };
@ -2777,7 +2777,7 @@ std::vector<std::string> leet::returnSupportedSpecs() {
return vector;
}
int leet::returnMaxUploadLimit(const leet::User::credentialsResponse& resp) {
int leet::returnMaxUploadLimit(const leet::User::CredentialsResponse& resp) {
const std::string APIUrl { "/_matrix/media/v3/config" };
const std::string Output { leet::invokeRequest_Get(leet::getAPI(APIUrl), resp.accessToken) };