Commons/src/main/java/eu/univento/commons/player/uuid/NameFetcher.java

64 lines
2.7 KiB
Java

package eu.univento.commons.player.uuid;
import eu.univento.commons.Commons;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;
/**
* @author codebucketdev
*/
public class NameFetcher {
private static final JSONParser jsonParser = new JSONParser();
private static final String REQUEST_URL = "https://mcapi.de/api/user/";
private static final String PROFILE_URL = "https://sessionserver.mojang.com/session/minecraft/profile/";
public static String getRequest(UUID uuid) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(REQUEST_URL + fromUniqueId(uuid)).openConnection();
JSONObject response = (JSONObject) jsonParser.parse(new InputStreamReader(connection.getInputStream()));
String uniqueId = (String) response.get("uuid");
if (uniqueId.length() == 0)
Commons.getCommons().getLoggingHandler().getCommons().error("A Username for UUID '" + uuid.toString() + "' was not found in the database! Is the account not premium?");
return (String) response.get("username");
} catch (IOException |ParseException e) {
return callMojang(uuid);
}
}
private static String callMojang(UUID uuid) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(PROFILE_URL + fromUniqueId(uuid)).openConnection();
JSONObject response = (JSONObject) jsonParser.parse(new InputStreamReader(connection.getInputStream()));
String name = (String) response.get("name");
if (name == null)
Commons.getCommons().getLoggingHandler().getCommons().error("A Username for UUID '" + uuid.toString() + "' was not found in the database! Is the account not premium?");
String cause = (String) response.get("cause");
String errorMessage = (String) response.get("errorMessage");
if (cause != null && cause.length() > 0) {
Commons.getCommons().getLoggingHandler().getCommons().error(errorMessage);
}
return name;
} catch (IOException | ParseException e) {
e.printStackTrace();
Commons.getCommons().getLoggingHandler().getCommons().error("A Username for UUID '" + uuid.toString() + "' was not found in the database! Is the account not premium?");
}
return null;
}
private static String fromUniqueId(UUID uuid) {
return uuid.toString().replaceAll("-", "");
}
}