From 9c5b36cec7db880394d8b4b7375ff0b12c1d22d8 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 27 Sep 2019 22:21:42 -0400 Subject: [PATCH] item manager: use caching okhttp client --- .../runelite/http/api/item/ItemClient.java | 22 ++++++++++++++----- .../net/runelite/client/game/ItemManager.java | 6 +++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java b/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java index 17784dd67b..d1262e32c6 100644 --- a/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java +++ b/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java @@ -34,8 +34,10 @@ import java.lang.reflect.Type; import java.util.Arrays; import java.util.Map; import javax.imageio.ImageIO; +import javax.inject.Inject; import net.runelite.http.api.RuneLiteAPI; import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import org.slf4j.Logger; @@ -45,6 +47,14 @@ public class ItemClient { private static final Logger logger = LoggerFactory.getLogger(ItemClient.class); + private final OkHttpClient client; + + @Inject + public ItemClient(OkHttpClient client) + { + this.client = client; + } + public ItemPrice lookupItemPrice(int itemId) throws IOException { HttpUrl url = RuneLiteAPI.getApiBase().newBuilder() @@ -59,7 +69,7 @@ public class ItemClient .url(url) .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { @@ -95,7 +105,7 @@ public class ItemClient .url(url) .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { @@ -126,7 +136,7 @@ public class ItemClient .url(url) .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { @@ -156,7 +166,7 @@ public class ItemClient .url(url) .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { @@ -187,7 +197,7 @@ public class ItemClient .url(url) .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { @@ -219,7 +229,7 @@ public class ItemClient .url(url) .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + try (Response response = client.newCall(request).execute()) { if (!response.isSuccessful()) { diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java index e758d66969..88cb65b466 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java @@ -84,7 +84,7 @@ public class ItemManager private final ScheduledExecutorService scheduledExecutorService; private final ClientThread clientThread; - private final ItemClient itemClient = new ItemClient(); + private final ItemClient itemClient; private Map itemPrices = Collections.emptyMap(); private Map itemStats = Collections.emptyMap(); private final LoadingCache itemImages; @@ -155,11 +155,13 @@ public class ItemManager build(); @Inject - public ItemManager(Client client, ScheduledExecutorService executor, ClientThread clientThread) + public ItemManager(Client client, ScheduledExecutorService executor, ClientThread clientThread, + ItemClient itemClient) { this.client = client; this.scheduledExecutorService = executor; this.clientThread = clientThread; + this.itemClient = itemClient; scheduledExecutorService.scheduleWithFixedDelay(this::loadPrices, 0, 30, TimeUnit.MINUTES); scheduledExecutorService.submit(this::loadStats);