diff options
| author | Roman / Linnea Gräf <roman.graef@gmail.com> | 2022-09-29 17:25:37 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-29 17:25:37 +0200 |
| commit | 2dd4a2b36211c380c0bf4e231859dfafd3c04a5b (patch) | |
| tree | 20cde26c05f32699ccb91cda1d37b67f4eea6c62 /src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java | |
| parent | cbcc4c3b4004cbf3f86aeab515ea94a93b4efd1e (diff) | |
| download | notenoughupdates-2dd4a2b36211c380c0bf4e231859dfafd3c04a5b.tar.gz notenoughupdates-2dd4a2b36211c380c0bf4e231859dfafd3c04a5b.tar.bz2 notenoughupdates-2dd4a2b36211c380c0bf4e231859dfafd3c04a5b.zip | |
Add custom keystore and refactor HypixelApi.java (#318)
* Add custom keystore and refactor HypixelApi.java
* Fix inputstream leak (+ less console spam)
* Fix HOTM crash
* Use api selected variable to find best profile
* Number formatting
* Make old profiles show again
Co-authored-by: nopo <nopotheemail@gmail.com>
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java')
| -rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java | 81 |
1 files changed, 19 insertions, 62 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java b/src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java index e7286721..625f92f7 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/PronounDB.java @@ -21,50 +21,17 @@ package io.github.moulberry.notenoughupdates.util; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; -import io.github.moulberry.notenoughupdates.core.util.StringUtils; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.URL; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; + import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; public class PronounDB { - static SSLContext ctx; - - static { - try { - KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(PronounDB.class.getResourceAsStream("/pronoundb.jks"), "pronoundb".toCharArray()); - ctx = SSLContext.getInstance("TLS"); - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - kmf.init(ks, null); - tmf.init(ks); - ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); - } catch (KeyStoreException | NoSuchAlgorithmException | KeyManagementException | UnrecoverableKeyException | - IOException | CertificateException e) { - System.out.println("Failed to load keystore. PronounDB requests will probably not work"); - e.printStackTrace(); - } - } - private static boolean isDisabled() { JsonObject disabled = Constants.DISABLE; return disabled != null && disabled.has("pronoundb"); @@ -73,22 +40,15 @@ public class PronounDB { /** * Returns an Optional, since JVMs can be *very* funky with KeyStore loading */ - public static Optional<JsonObject> performPronouning(String platform, String id) { - if (isDisabled()) return Optional.empty(); - try { - URL url = new URL("https://pronoundb.org/api/v1/lookup" + - "?platform=" + StringUtils.urlEncode(platform) + - "&id=" + StringUtils.urlEncode(id)); - HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection(); - urlConnection.setSSLSocketFactory(ctx.getSocketFactory()); - return Optional.of(NotEnoughUpdates.INSTANCE.manager.gson.fromJson( - new InputStreamReader(urlConnection.getInputStream()), - JsonObject.class - )); - } catch (ClassCastException | IOException | JsonParseException e) { - System.out.println("Failed to contact PronounDB: " + e); - return Optional.empty(); - } + public static CompletableFuture<Optional<JsonObject>> performPronouning(String platform, String id) { + if (isDisabled()) return CompletableFuture.completedFuture(Optional.empty()); + return NotEnoughUpdates.INSTANCE.manager.apiUtils + .request() + .url("https://pronoundb.org/api/v1/lookup") + .queryArgument("platform", platform) + .queryArgument("id", id) + .requestJson() + .handle((result, ex) -> Optional.ofNullable(result)); } public enum Pronoun { @@ -199,23 +159,20 @@ public class PronounDB { return Optional.empty(); } - public static Optional<PronounChoice> getPronounsFor(String platform, String name) { - return performPronouning(platform, name).flatMap(PronounDB::parsePronouns); + public static CompletableFuture<Optional<PronounChoice>> getPronounsFor(String platform, String name) { + return performPronouning(platform, name).thenApply(it -> it.flatMap(PronounDB::parsePronouns)); } - public static Optional<PronounChoice> getPronounsFor(UUID minecraftPlayer) { - return performPronouning("minecraft", minecraftPlayer.toString() /* dashed UUID */) - .flatMap(PronounDB::parsePronouns); + public static CompletableFuture<Optional<PronounChoice>> getPronounsFor(UUID minecraftPlayer) { + return getPronounsFor("minecraft", minecraftPlayer.toString() /* dashed UUID */); } public static void test() { - try { - System.out.println("Pronouning..."); - PronounChoice pronounsFor = getPronounsFor(UUID.fromString("842204e6-6880-487b-ae5a-0595394f9948")).get(); + System.out.println("Pronouning..."); + getPronounsFor(UUID.fromString("842204e6-6880-487b-ae5a-0595394f9948")).thenAccept(it -> { + PronounChoice pronounsFor = it.get(); pronounsFor.render().forEach(System.out::println); - } catch (Exception e) { - e.printStackTrace(); - } + }); } } |
