From 301c82728132e76da9e93d0bd326f6c44593b5c0 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Sat, 20 Jan 2024 15:50:36 -0500 Subject: Handle rate limits (#507) --- src/main/java/de/hysky/skyblocker/utils/ApiUtils.java | 8 ++++++++ src/main/java/de/hysky/skyblocker/utils/Http.java | 4 ++++ 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/main/java/de/hysky/skyblocker/utils/ApiUtils.java b/src/main/java/de/hysky/skyblocker/utils/ApiUtils.java index 0121f8ad..c63af3ba 100644 --- a/src/main/java/de/hysky/skyblocker/utils/ApiUtils.java +++ b/src/main/java/de/hysky/skyblocker/utils/ApiUtils.java @@ -31,6 +31,10 @@ public class ApiUtils { * Multithreading is to be handled by the method caller */ public static String name2Uuid(String name) { + return name2Uuid(name, 0); + } + + private static String name2Uuid(String name, int retries) { Session session = MinecraftClient.getInstance().getSession(); if (session.getUsername().equals(name)) return UndashedUuid.toString(session.getUuidOrNull()); @@ -43,6 +47,10 @@ public class ApiUtils { NAME_2_UUID_CACHE.put(name, uuid); return uuid; + } else if (response.ratelimited() && retries < 3) { + Thread.sleep(800); + + return name2Uuid(name, ++retries); } } catch (Exception e) { LOGGER.error("[Skyblocker] Name to uuid lookup failed! Name: {}", name, e); diff --git a/src/main/java/de/hysky/skyblocker/utils/Http.java b/src/main/java/de/hysky/skyblocker/utils/Http.java index eced3c08..17079d15 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Http.java +++ b/src/main/java/de/hysky/skyblocker/utils/Http.java @@ -134,6 +134,10 @@ public class Http { return statusCode == 200; } + public boolean ratelimited() { + return statusCode == 429; + } + public boolean cached() { return cacheStatus.equals("HIT"); } -- cgit