package de.torui.coflsky.minecraft_integration; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.nio.file.Path; import java.nio.file.Paths; import java.time.Duration; import java.time.LocalDateTime; import java.time.ZonedDateTime; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import net.minecraftforge.fml.common.Loader; public class CoflSessionManager { public static Gson gson = new GsonBuilder() .registerTypeAdapter(ZonedDateTime.class, new TypeAdapter() { @Override public void write(JsonWriter out, ZonedDateTime value) throws IOException { out.value(value.toString()); } @Override public ZonedDateTime read(JsonReader in) throws IOException { return ZonedDateTime.parse(in.nextString()); } }) .enableComplexMapKeySerialization().create(); public static class CoflSession { public String SessionUUID; public ZonedDateTime timestampCreated; public CoflSession() {} public CoflSession(String sessionUUID, ZonedDateTime timestampCreated) { super(); SessionUUID = sessionUUID; this.timestampCreated = timestampCreated; } } public static void UpdateCoflSessions() throws IOException { Map sessions = GetCoflSessions(); for (String username : sessions.keySet()) { if(!isValidSession(sessions.get(username))) { DeleteCoflSession(username); } } } public static Path GetTempFileFolder() { Path dataPath = Paths.get(Loader.instance().getConfigDir().getPath(), "CoflSky", "sessions"); dataPath.toFile().mkdirs(); return dataPath; } public static Map GetCoflSessions() throws IOException{ File[] sessions = GetTempFileFolder().toFile().listFiles(); Map map = new HashMap<>(); for (int i= 0; i