diff --git a/Makefile b/Makefile index 59e5cbd..25c49f9 100644 --- a/Makefile +++ b/Makefile @@ -277,6 +277,10 @@ listTargets: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listTargets.cpp $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/listTargets $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listTargets.cpp $(LDFLAGS) +listProviderLogs: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listProviderLogs.cpp + @mkdir -p ./$(TESTS_DIR) + $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/listProviderLogs $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listProviderLogs.cpp $(LDFLAGS) + # Messaging - Topics getTopic: $(SRCS) $(EXAMPLES_DIR)/messaging/topics/getTopic.cpp @mkdir -p ./$(TESTS_DIR) diff --git a/examples/messaging/messages/listProviderLogs.cpp b/examples/messaging/messages/listProviderLogs.cpp new file mode 100644 index 0000000..02577c4 --- /dev/null +++ b/examples/messaging/messages/listProviderLogs.cpp @@ -0,0 +1,19 @@ +#include "Appwrite.hpp" +#include +int main() { + std::string projectId = "68853010003a3f4fc106"; + std::string apiKey = ""; + std::string providerId = "68bf146d003761d36496"; + Appwrite appwrite(projectId, apiKey); + Queries queries; + queries.queryLimit(50); + try { + std::string response = + appwrite.getMessaging().listProviderLogs(providerId, queries); + std::cout << "provider 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 6f7a70b..eaa9b13 100644 --- a/include/classes/Messaging.hpp +++ b/include/classes/Messaging.hpp @@ -181,7 +181,16 @@ class Messaging { */ std::string listProviders(Queries &queries); - /** + /** + * @brief List all provider logs. + * @param providerId ID of the provider + * @param queries Optional query filters + * @return JSON string of provider logs list + */ + std::string listProviderLogs(const std::string &providerId, + Queries &queries); + + /** * @brief Create a new Firebase Cloud Messaging provider. * @param providerId A unique Id for the provider. * @param name provider name. diff --git a/src/services/Messaging.cpp b/src/services/Messaging.cpp index 8f2f62a..6bcb82f 100644 --- a/src/services/Messaging.cpp +++ b/src/services/Messaging.cpp @@ -530,6 +530,26 @@ std::string Messaging::updatePush(const std::string &messageId, } } +std::string Messaging::listProviderLogs(const std::string &providerId, + Queries &queries) { + if (providerId.empty()) { + throw AppwriteException("Missing required parameter: providerId"); + } + std::string url = + Config::API_BASE_URL + "/messaging/providers/" + providerId + "/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 providers logs. Status code: " + + std::to_string(statusCode) + + "\nResponse: " + response); + } +} + std::string Messaging::createFcmProvider(std::string &providerId, std::string name, std::string service_account_json, @@ -681,3 +701,4 @@ std::string Messaging::listTargets(const std::string &messageId, } } +