From 16433da60f256ccbb1d8e2289d32a447f6ae4289 Mon Sep 17 00:00:00 2001 From: bassant ehab Date: Mon, 11 Aug 2025 19:43:30 +0000 Subject: [PATCH 1/2] listProviders function --- Makefile | 4 +++- examples/messaging/messages/listProviders.cpp | 16 ++++++++++++++++ include/classes/Messaging.hpp | 7 ++++++- src/services/Messaging.cpp | 15 +++++++++++++++ 4 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 examples/messaging/messages/listProviders.cpp diff --git a/Makefile b/Makefile index b435495..29bc870 100644 --- a/Makefile +++ b/Makefile @@ -254,7 +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) - +listProviders: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listProviders.cpp + @mkdir -p ./$(TESTS_DIR) + $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/listProviders $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listProviders.cpp $(LDFLAGS) # Messaging - Topics getTopic: $(SRCS) $(EXAMPLES_DIR)/messaging/topics/getTopic.cpp @mkdir -p ./$(TESTS_DIR) diff --git a/examples/messaging/messages/listProviders.cpp b/examples/messaging/messages/listProviders.cpp new file mode 100644 index 0000000..23b28c8 --- /dev/null +++ b/examples/messaging/messages/listProviders.cpp @@ -0,0 +1,16 @@ +#include "Appwrite.hpp" +#include +int main() { + std::string projectId = "68853010003a3f4fc106"; + std::string apiKey = ""; + Appwrite appwrite(projectId, apiKey); + Queries queries; + queries.queryLimit(50); + try { + std::string response = appwrite.getMessaging().listProviders(queries); + std::cout << "providers fetched! \nResponse: " << response << std::endl; + } catch (const AppwriteException &ex) { + std::cerr << "Exception: " << ex.what() << std::endl; + } + return 0; +} diff --git a/include/classes/Messaging.hpp b/include/classes/Messaging.hpp index bc7c0bd..9bca95a 100644 --- a/include/classes/Messaging.hpp +++ b/include/classes/Messaging.hpp @@ -174,7 +174,12 @@ class Messaging { const std::vector &topicId = {}, const std::vector &userId = {}); - + /** + * @brief List all providers. + * @param queries Optional query filters + * @return JSON string of providers list + */ + std::string listProviders(Queries &queries); private: std::string projectId; ///< Project ID std::string apiKey; ///< API Key diff --git a/src/services/Messaging.cpp b/src/services/Messaging.cpp index 13b8916..599c315 100644 --- a/src/services/Messaging.cpp +++ b/src/services/Messaging.cpp @@ -528,4 +528,19 @@ std::string Messaging::updatePush(const std::string &messageId, "Error updating push message. Status code: " + std::to_string(statusCode) + "\n\nResponse: " + response); } +} + +std::string Messaging::listProviders(Queries &queries) { + std::string url = Config::API_BASE_URL + "/messaging/providers"; + 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 providers . Status code: " + + std::to_string(statusCode) + + "\nResponse: " + response); + } } \ No newline at end of file From 8365c64faa6b09947f5cedd9d622c2056e910b1b Mon Sep 17 00:00:00 2001 From: bassant ehab saber esmail <85416647+basant20415@users.noreply.github.com> Date: Wed, 13 Aug 2025 04:04:14 +0300 Subject: [PATCH 2/2] Update Messaging.hpp --- include/classes/Messaging.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/classes/Messaging.hpp b/include/classes/Messaging.hpp index 47b392e..6394bc6 100644 --- a/include/classes/Messaging.hpp +++ b/include/classes/Messaging.hpp @@ -180,7 +180,8 @@ class Messaging { * @return JSON string of providers list */ std::string listProviders(Queries &queries); - + + /** * @brief List all message logs with optional filters. * @param messageId ID of the message * @param queries Query parameters for filtering