diff --git a/Makefile b/Makefile index c151b0c..0608738 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) +deleteProvider: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/deleteProvider.cpp + @mkdir -p ./$(TESTS_DIR) + $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/deleteProvider $(SRCS) $(EXAMPLES_DIR)/messaging/messages/deleteProvider.cpp $(LDFLAGS) getProvider: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/getProvider.cpp @mkdir -p ./$(TESTS_DIR) $(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/getProvider $(SRCS) $(EXAMPLES_DIR)/messaging/messages/getProvider.cpp $(LDFLAGS) diff --git a/examples/messaging/messages/deleteProvider.cpp b/examples/messaging/messages/deleteProvider.cpp new file mode 100644 index 0000000..748079b --- /dev/null +++ b/examples/messaging/messages/deleteProvider.cpp @@ -0,0 +1,15 @@ +#include "Appwrite.hpp" +#include +int main() { + std::string projectId = "68853010003a3f4fc106"; + std::string apiKey = ""; + std::string providerId = "68a22c7b00325882e4e5"; + try { + Messaging messaging(projectId, apiKey); + std::string response = messaging.deleteProvider(providerId); + std::cout << "provider deleted!\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 480aab2..4de5067 100644 --- a/include/classes/Messaging.hpp +++ b/include/classes/Messaging.hpp @@ -181,6 +181,13 @@ class Messaging { */ std::string listProviders(Queries &queries); + /** + * @brief Delete a provider. + * @param providerId ID of the provider + * @return JSON response + */ + std::string deleteProvider(const std::string &providerId); + /** * @brief Get a specific provider by ID. * @param providerId ID of the provider @@ -211,6 +218,7 @@ class Messaging { */ std::string listTargets(const std::string &messageId, const std::vector &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 6dfc1b2..830d450 100644 --- a/src/services/Messaging.cpp +++ b/src/services/Messaging.cpp @@ -249,7 +249,7 @@ std::string Messaging::listSubscribers(const std::string &topicId, std::string url = Config::API_BASE_URL + "/messaging/topics/" + topicId + "/subscribers" + queries.to_string(); - ; + std::vector headers = Config::getHeaders(projectId); headers.push_back("X-Appwrite-Key: " + apiKey); @@ -530,6 +530,25 @@ std::string Messaging::updatePush(const std::string &messageId, } } +std::string Messaging::deleteProvider(const std::string &providerId) { + if (providerId.empty()) { + throw AppwriteException("Missing required parameter: providerId"); + } + std::string url = + Config::API_BASE_URL + "/messaging/providers/" + providerId; + std::vector headers = Config::getHeaders(projectId); + headers.push_back("X-Appwrite-Key: " + apiKey); + std::string response; + int statusCode = Utils::deleteRequest(url, headers, response); + if (statusCode == HttpStatus::DELETED) { + return "provider deleted successfully."; + } else { + throw AppwriteException("Failed to delete provider. Status code: " + + std::to_string(statusCode) + + "\nResponse: " + response); + } +} + std::string Messaging::getProvider(const std::string &providerId) { if (providerId.empty()) { throw AppwriteException("Missing required parameter: providerId");