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 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 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."); } }