Created the ResponderContext

This commit is contained in:
mathias 2021-10-02 00:16:59 +02:00
parent 28fb627491
commit 4f3e503860
No known key found for this signature in database
GPG Key ID: 8950DF62139C852A

View File

@ -0,0 +1,56 @@
package de.gnmyt.autoresponder.http.contexts;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
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;
public class ResponderContext extends SimpleHttpHandler {
private final ObjectMapper mapper = new ObjectMapper();
private final SimpleAutoResponder responder;
/**
* Constructor of the {@link ResponderContext}
* @param responder Your current {@link SimpleAutoResponder} instance
*/
public ResponderContext(SimpleAutoResponder responder) {
this.responder = responder;
}
@Override
public void execute(String body, HttpResponseController controller) throws Exception {
JsonNode rootNode = mapper.readTree(body);
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);
}
/**
* Triggers the correct event
*
* @param appPackageName The package name of the responder app
* @param messengerPackageName The package name of your whatsapp instance
* @param sender The sender of the message
* @param message The message itself
* @param isGroup <code>true</code> if the provided message has been sent in a group, otherwise <code>false</code>
* @param groupParticipant (Optional) The group participant
* @param ruleId The id of the rule that has been executed
* @param controller The response controller of the executed request
*/
public void triggerEvent(String appPackageName, String messengerPackageName, String sender, String message, boolean isGroup,
String groupParticipant, int ruleId, HttpResponseController controller) {
if (isGroup) {
new GroupMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender,
message, groupParticipant).call();
} else {
new ChatMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender, message).call();
}
}
}