Integrated the ResponderContext#sendNotFoundReply to send messages that could not be identified

This commit is contained in:
mathias 2021-10-02 17:58:15 +02:00
parent f754b87b73
commit 09bdf731f2
No known key found for this signature in database
GPG Key ID: 8950DF62139C852A

View File

@ -2,19 +2,26 @@ package de.gnmyt.autoresponder.http.contexts;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import de.gnmyt.autoresponder.SimpleAutoResponder;
import de.gnmyt.autoresponder.event.chat.ChatMessageReceivedEvent;
import de.gnmyt.autoresponder.event.group.GroupMessageReceivedEvent;
import de.gnmyt.autoresponder.http.controller.HttpResponseController;
import de.gnmyt.autoresponder.http.handler.SimpleHttpHandler;
import java.util.concurrent.CompletableFuture;
public class ResponderContext extends SimpleHttpHandler {
private final ObjectMapper mapper = new ObjectMapper();
private final SimpleAutoResponder responder;
private final ObjectMapper objectMapper = new ObjectMapper();
/**
* Constructor of the {@link ResponderContext}
*
* @param responder Your current {@link SimpleAutoResponder} instance
*/
public ResponderContext(SimpleAutoResponder responder) {
@ -27,9 +34,13 @@ public class ResponderContext extends SimpleHttpHandler {
JsonNode query = rootNode.get("query");
triggerEvent(rootNode.get("appPackageName").asText(), rootNode.get("messengerPackageName").asText(),
query.get("sender").asText(), query.get("message").asText(), query.get("isGroup").asBoolean(),
query.get("groupParticipant").asText(), query.get("ruleId").asInt(), controller);
CompletableFuture.runAsync(() -> {
triggerEvent(rootNode.get("appPackageName").asText(), rootNode.get("messengerPackageName").asText(),
query.get("sender").asText(), query.get("message").asText(), query.get("isGroup").asBoolean(),
query.get("groupParticipant").asText(), query.get("ruleId").asInt(), controller);
if (!controller.isResponseSent()) sendNotFoundReply(query, controller);
});
}
/**
@ -53,4 +64,21 @@ public class ResponderContext extends SimpleHttpHandler {
new ChatMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender, message).call();
}
}
/**
* Sends the "not found"-reply
*
* @param query The query that the responder sent
* @param controller The response controller from the request
*/
public void sendNotFoundReply(JsonNode query, HttpResponseController controller) {
ObjectNode object = objectMapper.createObjectNode();
ArrayNode replies = object.withArray("replies");
responder.getNotFoundHandler().handleRequest(query.get("isGroup").asBoolean() ? query.get("groupParticipant").asText()
: query.get("sender").asText(), query.get("message").asText()).forEach(message ->
replies.add(mapper.createObjectNode().put("message", message)));
controller.text(object.toString());
}
}