MinecraftManagerPlugin/src/main/java/xyz/etztech/minecraftmanager/listeners/SessionListener.java

81 lines
2.7 KiB
Java

package xyz.etztech.minecraftmanager.listeners;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import xyz.etztech.core.web.Http;
import xyz.etztech.core.web.ICallback;
import xyz.etztech.minecraftmanager.MCMAPI;
import xyz.etztech.minecraftmanager.MCMUtil;
import xyz.etztech.minecraftmanager.MinecraftManager;
import xyz.etztech.minecraftmanager.objects.MinecraftManagerThread;
import xyz.etztech.minecraftmanager.objects.ModelResponse;
import java.util.Map;
public class SessionListener implements Listener {
private MinecraftManager plugin;
public SessionListener(MinecraftManager minecraftManager) {
this.plugin = minecraftManager;
}
@EventHandler
public void onLogin(PlayerLoginEvent event) {
Player player = event.getPlayer();
String djangoUrl = MCMAPI.getDjangoUrl() + "plugin/login/";
Map<String, String> data = MCMAPI.setup();
data.put("username", player.getName());
data.put("uuid", player.getUniqueId().toString());
data.put("ip", event.getAddress().getHostAddress());
Http.asyncPost(plugin, djangoUrl, data);
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
MCMUtil.log(MCMUtil.globalLogger, player.getName() + " logged in.");
// Check for guests
if (player.hasPermission("minecraftmanager.guest")) {
Map<String, String> filters = MCMAPI.setup();
filters.put("username__iexact", player.getName());
Http.asyncGetCallback(plugin, MCMAPI.getModelUrl("application"), filters, new JoinCallback(player.getName()));
}
}
private class JoinCallback implements ICallback {
private String name;
JoinCallback(String name) {
this.name = name;
}
@Override
public void invoke(String s) {
ModelResponse response = new ModelResponse(s);
JsonArray query = response.getResults();
if (query.size() == 1) {
JsonElement element = query.get(0).getAsJsonObject().get("accepted");
if (!element.isJsonNull()) {
MinecraftManagerThread.action(name, element.getAsBoolean());
}
}
}
}
@EventHandler
public void onLogout(PlayerQuitEvent event) {
Player player = event.getPlayer();
MCMUtil.log(MCMUtil.globalLogger, player.getName() + " logged out.");
}
}