74 lines
3 KiB
Java
74 lines
3 KiB
Java
package net.saltymc.eaa.util.mojangApi;
|
|
|
|
import com.google.gson.JsonElement;
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.JsonParser;
|
|
import org.apache.http.HttpResponse;
|
|
import org.apache.http.client.HttpClient;
|
|
import org.apache.http.client.methods.HttpGet;
|
|
import org.apache.http.client.methods.HttpPost;
|
|
import org.apache.http.entity.StringEntity;
|
|
import org.apache.http.impl.client.HttpClientBuilder;
|
|
import org.apache.http.util.EntityUtils;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
public class PlayerInfo {
|
|
|
|
private static final Logger LOGGER = LogManager.getLogger();
|
|
|
|
public static String playerNameToUUID(String playerName) throws MojangUtilException {
|
|
|
|
HttpClient httpClient = HttpClientBuilder.create().build();
|
|
try {
|
|
HttpPost request = new HttpPost("https://api.mojang.com/profiles/minecraft");
|
|
StringEntity params = new StringEntity("[\"" + playerName + "\"]");
|
|
request.addHeader("Content-Type", "application/json");
|
|
request.setEntity(params);
|
|
HttpResponse response = httpClient.execute(request);
|
|
|
|
// take the response body as a json formatted string
|
|
JsonObject responseJSON = new JsonParser().parse(EntityUtils.toString(response.getEntity())).getAsJsonArray().get(0).getAsJsonObject();
|
|
|
|
//doublecheck correct name
|
|
if (!responseJSON.get("name").getAsString().equalsIgnoreCase(playerName))
|
|
throw new Exception("Api response provided wrong player!");
|
|
|
|
return responseJSON.get("id").getAsString();
|
|
|
|
} catch (Exception ex) {
|
|
LOGGER.error("Error parsing playername to UUID while contacting API: ", ex);
|
|
throw new MojangUtilException("Could not parse Username to UUID!", ex);
|
|
}
|
|
}
|
|
|
|
public static List<String> playerUUIDToNames(String playerUUID) throws MojangUtilException {
|
|
try {
|
|
HttpClient httpClient = HttpClientBuilder.create().build();
|
|
HttpGet request = new HttpGet("https://api.mojang.com/user/profiles/" + playerUUID.toString().replaceAll("-", "") + "/names");
|
|
HttpResponse response = httpClient.execute(request);
|
|
|
|
List<String> ret = new ArrayList<>();
|
|
|
|
// take the response body as a json formatted string
|
|
for (JsonElement responseJSON : new JsonParser().parse(EntityUtils.toString(response.getEntity())).getAsJsonArray())
|
|
ret.add(responseJSON.getAsJsonObject().get("name").getAsString());
|
|
|
|
return ret;
|
|
|
|
} catch (Exception e) {
|
|
LOGGER.error("Could not parse UUID to username!", e);
|
|
throw new MojangUtilException("Could not parse UUID to username!", e);
|
|
}
|
|
}
|
|
|
|
public static String playerUUIDToCurrentName(String playerUUID) throws MojangUtilException {
|
|
List<String> playernames = playerUUIDToNames(playerUUID);
|
|
|
|
return playernames.get(playernames.size() - 1);
|
|
}
|
|
}
|