diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/util/NameFetcher.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/util/NameFetcher.java index 7fb9870..09e0b84 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/util/NameFetcher.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/util/NameFetcher.java @@ -6,46 +6,21 @@ */ package com.imaginarycode.minecraft.redisbungee.util; -import com.google.common.collect.ImmutableList; +import com.google.common.io.ByteStreams; import com.google.gson.reflect.TypeToken; import com.imaginarycode.minecraft.redisbungee.RedisBungee; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; +import java.io.IOException; +import java.lang.reflect.Type; import java.net.URL; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.Callable; +import java.net.URLConnection; +import java.util.*; -/* Credits to evilmidget38 for this class. I modified it to use Gson. */ -class NameFetcher implements Callable> { - private static final String PROFILE_URL = "https://sessionserver.mojang.com/session/minecraft/profile/"; - private final List uuids; - - public NameFetcher(List uuids) { - this.uuids = ImmutableList.copyOf(uuids); - } - - @Override - public Map call() throws Exception { - Map uuidStringMap = new HashMap<>(); - for (UUID uuid : uuids) { - HttpURLConnection connection = (HttpURLConnection) new URL(PROFILE_URL + uuid.toString().replace("-", "")).openConnection(); - Map response = RedisBungee.getGson().fromJson(new InputStreamReader(connection.getInputStream()), new TypeToken>() { - }.getType()); - String name = response.get("name"); - if (name == null) { - continue; - } - String cause = response.get("cause"); - String errorMessage = response.get("errorMessage"); - if (cause != null && cause.length() > 0) { - throw new IllegalStateException(errorMessage); - } - uuidStringMap.put(uuid, name); - } - return uuidStringMap; +public class NameFetcher { + public static List nameHistoryFromUuid(UUID uuid) throws IOException { + URLConnection connection = new URL("https://api.mojang.com/user/profiles/" + uuid.toString().replace("-", "").toLowerCase() + "/names").openConnection(); + String text = new String(ByteStreams.toByteArray(connection.getInputStream())); + Type listType = new TypeToken>() {}.getType(); + return RedisBungee.getGson().fromJson(text, listType); } } \ No newline at end of file