Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'develop' into deleteProvider
  • Loading branch information
basant20415 authored Aug 18, 2025
commit 21c303c510f655704be89fd277b57ad0a511404c
9 changes: 9 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,15 @@ createMessage: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/createMessage.cpp
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)
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)
listTargets: $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listTargets.cpp
@mkdir -p ./$(TESTS_DIR)
$(CXX) $(CXXFLAGS) -o ./$(TESTS_DIR)/listTargets $(SRCS) $(EXAMPLES_DIR)/messaging/messages/listTargets.cpp $(LDFLAGS)

# Messaging - Topics
getTopic: $(SRCS) $(EXAMPLES_DIR)/messaging/topics/getTopic.cpp
Expand Down
25 changes: 25 additions & 0 deletions include/classes/Messaging.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,31 @@ class Messaging {
* @return JSON response
*/
std::string deleteProvider(const std::string &providerId);

/**
* @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);

/**
* @brief List all targets for a given message.
* @param messageId ID of the message.
* @param queries Optional query filters.
* @return JSON response.
*/
std::string listTargets(const std::string &messageId,
const std::vector<std::string> &queries = {});

private:
std::string projectId; ///< Project ID
std::string apiKey; ///< API Key
Expand Down
69 changes: 69 additions & 0 deletions src/services/Messaging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -547,4 +547,73 @@ std::string Messaging::deleteProvider(const std::string &providerId) {
std::to_string(statusCode) +
"\nResponse: " + response);
}
}

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<std::string> 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");
}
std::string url = Config::API_BASE_URL + "/messaging/messages/" + messageId;
std::vector<std::string> 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 "Message deleted.";
} else {
throw AppwriteException("Failed to delete message. Status code: " +
std::to_string(statusCode) +
"\nResponse: " + response);
}
}

std::string Messaging::listTargets(const std::string &messageId,
const std::vector<std::string> &queries) {
if (messageId.empty()) {
throw AppwriteException("Missing required parameter: 'messageId'");
}

std::string url = Config::API_BASE_URL + "/messaging/messages/" + messageId + "/targets";
std::string queryParam = "";
if (!queries.empty()) {
queryParam += "?queries[]=" + Utils::urlEncode(queries[0]);
for (size_t i = 1; i < queries.size(); ++i) {
queryParam += "&queries[]=" + Utils::urlEncode(queries[i]);
}
}

url += queryParam;

std::vector<std::string> 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 fetching message targets. Status code: " + std::to_string(statusCode) +
"\n\nResponse: " + response);
}

}
You are viewing a condensed version of this merge commit. You can view the full changes here.