diff --git a/Makefile b/Makefile index 16a31cc..5b8d5d9 100644 --- a/Makefile +++ b/Makefile @@ -254,6 +254,9 @@ getMessages: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/getMessages.cpp createMessage: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/createMessage.cpp @mkdir -p ./$(TESTS_DIR) $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/createMessage $(SRCS) $(EXAMPLES_DIR)/messaging/messages/createMessage.cpp $(LDFLAGS) +listMessageLogs: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listMessageLogs.cpp + @mkdir -p ./$(TESTS_DIR) + $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/listMessageLogs $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listMessageLogs.cpp $(LDFLAGS) deleteMessages: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/deleteMessages.cpp @mkdir -p ./$(TESTS_DIR) $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/deleteMessages $(SRCS) $(EXAMPLES_DIR)/messaging/messages/deleteMessages.cpp $(LDFLAGS) diff --git a/examples/messaging/messages/listMessageLogs.cpp b/examples/messaging/messages/listMessageLogs.cpp new file mode 100644 index 0000000..d898245 --- /dev/null +++ b/examples/messaging/messages/listMessageLogs.cpp @@ -0,0 +1,21 @@ +#include "Appwrite.hpp" +#include +int main() { + std::string projectId = "66fbb5a100070a3a1d19"; + std::string apiKey = ""; + std::string messageId = "688e98ba00107a10f041"; + + Appwrite appwrite(projectId, apiKey); + Queries queries; + + queries.queryLimit(50); + try { + std::string response = + appwrite.getMessaging().listMessageLogs(messageId, queries); + std::cout << "Message logs fetched! \nResponse: " << response + << std::endl; + } catch (const AppwriteException &ex) { + std::cerr << "Exception: " << ex.what() << std::endl; + } + return 0; +} \ No newline at end of file diff --git a/include/classes/Messaging.hpp b/include/classes/Messaging.hpp index 7d1aaf9..d739aec 100644 --- a/include/classes/Messaging.hpp +++ b/include/classes/Messaging.hpp @@ -175,11 +175,20 @@ class Messaging { const std::vector &userId = {}); /** + * @brief List all message logs with optional filters. + * @param messageId ID of the message + * @param queries Query parameters for filtering + * @return JSON string of messageLog list + */ + std::string listMessageLogs(const std::string &messageId, Queries &queries); + + /** * @brief Delete a message by its ID. * @param messageId ID of the message. * @return JSON response. */ std::string deleteMessages(const std::string &messageId); + private: std::string projectId; ///< Project ID std::string apiKey; ///< API Key diff --git a/src/services/Messaging.cpp b/src/services/Messaging.cpp index 3c27540..70dd252 100644 --- a/src/services/Messaging.cpp +++ b/src/services/Messaging.cpp @@ -530,6 +530,25 @@ std::string Messaging::updatePush(const std::string &messageId, } } + +std::string Messaging::listMessageLogs(const std::string &messageId, + Queries &queries) { + if (messageId.empty()) { + throw AppwriteException("Missing required parameter: messageId"); + } + std::string url = + Config::API_BASE_URL + "/messaging/messages/" + messageId + "/logs"; + std::vector headers = Config::getHeaders(projectId); + headers.push_back("X-Appwrite-Key: " + apiKey); + std::string response; + int statusCode = Utils::getRequest(url, headers, response); + if (statusCode == HttpStatus::OK) { + return response; + } else { + throw AppwriteException("Error listing message logs. Status code: " +std::to_string(statusCode) + "\nResponse: " + response); + } +} + std::string Messaging::deleteMessages(const std::string &messageId) { if (messageId.empty()) { throw AppwriteException("Missing required parameter: messageId");