/
Shymer123
/
Messenger
Обзор
Документация
Войти
/
Shymer123
/
Messenger
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/JsonHandler/JsonHandler.cpp
258 строк
9 KB
Shymer123
added chat creation confirmation, and now the group and chat are created through procedures (reduced delays in accessing the database)
17 май 2025, 06:06
17 май 2025, 06:06
7df2171
Код
Авторство
О чём код?
#include "JsonHandler.h" #include "DataModels/MessageData.h" #include "Logger/Logger.h" #include "DatabaseManager/DatabaseManager.h" using json = nlohmann::json; std::string JsonHandler::processJson(int clientSocket, const json& request) { std::string action = request["action"]; DatabaseManager& dbManager = DatabaseManager::getInstance(); if(action == "isNameAlreadyUse") { std::string userName = request["userName"]; json response = dbManager.getIsNameAlreadyUse(userName); return response.dump(); } else if(action == "isPhoneNumberAlreadyUse") { std::string phoneNumber = request["phoneNumber"]; json response = dbManager.getIsPhoneNumberAlreadyUse(phoneNumber); return response.dump(); } else if(action == "getStoredPasswordData") { std::string userName = request["userName"]; json response = dbManager.getStoredPasswordData(userName); return response.dump(); } else if(action == "getUserID") { std::string userName = request["userName"]; json response = dbManager.getUserID(userName); return response.dump(); } else if(action == "getChats") { int userID = request["userID"]; json response = dbManager.getChats(userID); return response.dump(); } else if(action == "getSingleChat") { int chatID = request["chatID"]; json response = dbManager.getSingleChat(chatID); return response.dump(); } else if(action == "getMessages") { int chatID = request["chatID"]; json response = dbManager.getMessages(chatID); return response.dump(); } else if(action == "downloadFile") { int fileID = request["fileID"]; dbManager.downloadFile(clientSocket, fileID); return "ADD"; } else if(action == "getContacts") { int userID = request["userID"]; json response = dbManager.getContacts(userID); return response.dump(); } else if(action == "getUserData") { int chatID = request["chatID"]; int currentUserID = request["currentUserID"]; json response = dbManager.getUserData(chatID, currentUserID); return response.dump(); } else if(action == "getGroupData") { int chatID = request["chatID"]; json response = dbManager.getGroupData(chatID); return response.dump(); } else if(action == "getDialogID") { int currentUserID = request["currentUserID"]; int user2ID = request["user2ID"]; json response = dbManager.getDialogIDAfterCreation(currentUserID, user2ID); return response.dump(); } else if(action == "getGroupID") { int userID = request["userID"]; std::string groupName = request["groupName"]; json response = dbManager.getGroupID(userID, groupName); return response.dump(); } else if(action == "getMembersID") { int userID = request["userID"]; int chatID = request["chatID"]; json response = dbManager.getMembersIDInGroup(userID, chatID); return response.dump(); } else if(action == "getParticipantIDInDialogUsePhoneNumber") { std::string phoneNumber = request["phoneNumber"]; json response = dbManager.getParticipantIDInDialogUsePhoneNumber(phoneNumber); return response.dump(); } else if(action == "getPhoneNumberUser2InDialog") { int userID = request["userID"]; std::string chatName = request["chatName"]; json response = dbManager.getPhoneNumberUser2InDialog(userID, chatName); return response.dump(); } else if(action == "getPhoneNumber") { int userID = request["userID"]; json response = dbManager.getPhoneNumber(userID); return response.dump(); } else if(action == "getMembersIDForSelected") { int userID = request["userID"]; std::vector<std::string> selectedMembers = request["members"].get<std::vector<std::string>>(); json response = dbManager.getMembersIDForSelected(userID, selectedMembers); return response.dump(); } else if(action == "getIsCombinedNameExists") { int userID = request["userID"]; std::string combinedName = request["combinedName"]; json response = dbManager.getIsCombinedNameExists(userID, combinedName); return response.dump(); } else if(action == "getIsPhoneNumberValid") { int userID = request["userID"]; std::string phoneNumber = request["phoneNumber"]; json response = dbManager.getIsPhoneNumberValid(userID, phoneNumber); return response.dump(); } // adding data only else if(action == "addUserInDatabase") { std::string userName = request["userName"]; std::string hashedPassword = request["hashedPassword"]; std::string salt = request["salt"]; std::string phoneNumber = request["phoneNumber"]; dbManager.addUserInDatabase(userName, hashedPassword, salt, phoneNumber); return "ADD"; } else if(action == "addUserInCache") { int userID = request["userID"]; dbManager.addUserInServerCache(clientSocket, userID); return "ADD"; } else if(action == "sendMessage") { Logger::getInstance().logError(request.dump(), Logger::logLevel::Info); MessageData data; int messageType = request["type"]; data.setMessageType(static_cast<MessageData::MessageType>(messageType)); data.setMessageID(request["messageID"]); data.setUserID(request["userID"]); data.setChatID(request["chatID"]); data.setUserName(request["userName"]); data.setTimestamp(request["timestamp"]); std::set<int> participantsID = request["participants"].get<std::set<int>>(); json response; if(messageType == 1) { data.setContent<std::string>(request["content"]); response = dbManager.sendMessage(data, participantsID); } else if(messageType == 2) { json content = request["files"]; json files = json::array(); files = content["content"]; std::string comment = request["comment"]; data.setContent(files); data.setAdditionalData(comment); response = dbManager.sendFile(data, participantsID); } return response.dump(); } else if(action == "addContact") { int currentUserID = request["currentUserID"]; std::string currentUserName = request["currentUserName"]; int user2ID = request["user2ID"]; std::string user2Name = request["user2Name"]; std::string user2PhoneNumber = request["user2PhoneNumber"]; dbManager.addContact(currentUserID, currentUserName, user2ID, user2Name, user2PhoneNumber); return "ADD"; } else if(action == "addFavourite") { int userID = request["userID"]; int tempChatID = request["chatID"]; json response = dbManager.addFavourite(userID, tempChatID); return response.dump(); } else if(action == "addDialog") { int currentUserID = request["currentUserID"]; std::string contactName = request["contactName"]; int tempChatID = request["chatID"]; json response = dbManager.addDialog(currentUserID, contactName, tempChatID); return response.dump(); } // else if(action == "addGroup") // { // std::string groupName = request["groupName"]; // dbManager.addGroup(groupName); // return "ADD"; // } else if(action == "addGroup") { int userID = request["userID"]; std::string groupName = request["groupName"]; int tempChatID = request["chatID"]; std::vector<std::string> selectedMembers = request["members"].get<std::vector<std::string>>(); json response = dbManager.addGroup(userID, groupName, selectedMembers, tempChatID); return response.dump(); } else if(action == "addMembersToGroup") { int groupID = request["groupID"]; json members = request["members"]; dbManager.addMembersToGroup(groupID, members); return "ADD"; } else if(action == "updateListDialogsForUsers") { int participantID = request["participantID"]; dbManager.updateListDialogsForUsers(participantID); return "ADD"; } else if(action == "updateListGroupsForUsers") { int groupID = request["groupID"]; std::set<int> membersID = request["membersID"].get<std::set<int>>(); dbManager.updateListGroupsForUsers(groupID, membersID); return "ADD"; } else { Logger::getInstance().logError("General Error in processJson: Unknown request", Logger::logLevel::Error); return "ERROR"; } }