This repository has been archived on 2025-03-19. You can view files and clone it, but cannot push or open issues or pull requests.

107 lines
3.2 KiB
Java

package de.gnmyt.autoresponder.event;
import de.gnmyt.autoresponder.SimpleAutoResponder;
import de.gnmyt.autoresponder.event.api.EventData;
import de.gnmyt.autoresponder.http.contexts.ResponderContext;
import de.gnmyt.autoresponder.http.controller.HttpResponseController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
public class ResponderEvent {
private static final Logger LOG = LoggerFactory.getLogger(ResponderEvent.class);
private final SimpleAutoResponder responder;
private final String appPackageName;
private final String messengerPackageName;
private final ResponderContext responderContext;
private final HttpResponseController responseController;
private final int ruleId;
/**
* Constructor of the {@link ResponderEvent}
*
* @param responder The current instance of your {@link SimpleAutoResponder}
* @param responderContext
* @param appPackageName The package name of the responder app
* @param messengerPackageName The package name of your whatsapp instance
* @param ruleId The id of the rule that has been executed
* @param responseController The response controller of the executed request
*/
public ResponderEvent(SimpleAutoResponder responder, ResponderContext responderContext, String appPackageName, String messengerPackageName, int ruleId, HttpResponseController responseController) {
this.responder = responder;
this.responderContext = responderContext;
this.appPackageName = appPackageName;
this.messengerPackageName = messengerPackageName;
this.ruleId = ruleId;
this.responseController = responseController;
}
/**
* Calls all registered event listeners
*/
public void call() {
ArrayList<EventData> eventList = responder.getEventManager().getEvents(this.getClass());
if (eventList == null) return;
for (EventData data : eventList) {
try {
data.method.invoke(data.object, this);
} catch (Exception e) {
LOG.error("Could not execute event: {}", e.getMessage());
}
}
}
/**
* Replies to the event
*
* @param messages The messages you want to send
*/
public void reply(String... messages) {
responseController.reply(messages);
}
/**
* Gets the app package name of the responder
*
* @return the app package name of the responder
*/
public String getAppPackageName() {
return appPackageName;
}
/**
* Gets the package name of your whatsapp instance
*
* @return the package name of your whatsapp instance
*/
public String getMessengerPackageName() {
return messengerPackageName;
}
/**
* Gets the responder context
*
* @return the responder context
*/
protected ResponderContext getResponderContext() {
return responderContext;
}
/**
* Gets the id of the rule provided by the responder
*
* @return the id of the rule provided by the responder
*/
public int getRuleId() {
return ruleId;
}
}