From 4c7ba6a9ad9b41ad81e6b99340d90e62fe3c24f7 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Thu, 28 Jan 2021 07:46:36 +1300 Subject: [PATCH] Fix inconsistancy in request delay obey --- .../utilities/mineskin/MineSkinAPI.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java b/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java index 2e526d93..4cb297ba 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java @@ -180,8 +180,8 @@ public class MineSkinAPI { callback.onError(LibsMsg.SKIN_API_FAIL); } finally { - lock.unlock(); nextRequest = System.currentTimeMillis() + nextRequestIn + 1000; + lock.unlock(); } return null; @@ -190,6 +190,18 @@ public class MineSkinAPI { public MineSkinResponse generateFromUUID(UUID uuid, SkinUtils.ModelType modelType) throws IllegalArgumentException { lock.lock(); + long sleep = nextRequest - System.currentTimeMillis(); + + if (sleep > 0) { + try { + Thread.sleep(sleep); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + long nextRequestIn = TimeUnit.SECONDS.toMillis(10); + try { String siteUrl = "https://api.mineskin.org/generate/user/:" + uuid.toString(); @@ -210,13 +222,11 @@ public class MineSkinAPI { MineSkinResponse skinResponse = new Gson().fromJson(response, MineSkinResponse.class); - nextRequest = System.currentTimeMillis() + (long) (skinResponse.getNextRequest() * 1000); + nextRequestIn = (long) (skinResponse.getNextRequest() * 1000); return skinResponse; } } catch (Exception ex) { - nextRequest = System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(10); - if (ex.getMessage() != null && ex.getMessage().contains("Server returned HTTP response code: 400 for URL")) { throw new IllegalArgumentException(); } @@ -224,6 +234,7 @@ public class MineSkinAPI { DisguiseUtilities.getLogger().warning("Failed to access MineSkin.org"); ex.printStackTrace(); } finally { + nextRequest = System.currentTimeMillis() + nextRequestIn + 1000; lock.unlock(); }