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 2566a9c603..9305a7c695 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,6 +34,7 @@ import java.io.InputStreamReader; import java.lang.reflect.Type; import java.util.Arrays; import java.util.Map; +import java.util.Observer; import javax.imageio.ImageIO; import net.runelite.http.api.RuneLiteAPI; import okhttp3.HttpUrl; @@ -134,7 +135,7 @@ public class ItemClient if (!response.isSuccessful()) { logger.debug("Error grabbing icon {}: {}", itemId, response); - return null; + return Observable.just(null); } InputStream in = response.body().byteStream(); @@ -167,7 +168,7 @@ public class ItemClient if (!response.isSuccessful()) { logger.debug("Error looking up item {}: {}", itemName, response); - return null; + return Observable.just(null); } InputStream in = response.body().byteStream(); @@ -202,7 +203,7 @@ public class ItemClient if (!response.isSuccessful()) { logger.warn("Error looking up prices: {}", response); - return null; + return Observable.just(null); } InputStream in = response.body().byteStream(); @@ -238,7 +239,7 @@ public class ItemClient if (!response.isSuccessful()) { logger.warn("Error looking up item stats: {}", response); - return null; + return Observable.just(null); } InputStream in = response.body().byteStream(); diff --git a/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java b/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java index 3c187552fc..1739125f8c 100644 --- a/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java +++ b/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java @@ -58,7 +58,7 @@ public class OSBGrandExchangeClient { if (!response.isSuccessful()) { - throw new IOException("Error looking up item id: " + response); + return Observable.error(new IOException("Error looking up item id: " + response)); } final InputStream in = response.body().byteStream(); diff --git a/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java b/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java index 668e088404..fbdbca9ad8 100644 --- a/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java +++ b/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java @@ -26,6 +26,7 @@ package net.runelite.http.api.worlds; import com.google.gson.JsonParseException; +import io.reactivex.Observable; import net.runelite.http.api.RuneLiteAPI; import okhttp3.HttpUrl; import okhttp3.Request; @@ -41,7 +42,7 @@ public class WorldClient { private static final Logger logger = LoggerFactory.getLogger(WorldClient.class); - public WorldResult lookupWorlds() throws IOException + public Observable lookupWorlds() { HttpUrl url = RuneLiteAPI.getApiBase().newBuilder() .addPathSegment("worlds.js") @@ -49,24 +50,27 @@ public class WorldClient logger.debug("Built URI: {}", url); - Request request = new Request.Builder() - .url(url) - .build(); - - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + return Observable.defer(() -> { - if (!response.isSuccessful()) + Request request = new Request.Builder() + .url(url) + .build(); + + try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) { - logger.debug("Error looking up worlds: {}", response); - return null; - } + if (!response.isSuccessful()) + { + logger.debug("Error looking up worlds: {}", response); + return null; + } - InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class); - } - catch (JsonParseException ex) - { - throw new IOException(ex); - } + InputStream in = response.body().byteStream(); + return Observable.just(RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class)); + } + catch (JsonParseException ex) + { + throw new IOException(ex); + } + }); } }