http-api: Return null obervables when failing

This commit is contained in:
Owain van Brakel
2019-07-19 04:56:54 +02:00
parent 241fbd136c
commit 60d734549f
3 changed files with 27 additions and 22 deletions

View File

@@ -34,6 +34,7 @@ import java.io.InputStreamReader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Arrays; import java.util.Arrays;
import java.util.Map; import java.util.Map;
import java.util.Observer;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.RuneLiteAPI;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
@@ -134,7 +135,7 @@ public class ItemClient
if (!response.isSuccessful()) if (!response.isSuccessful())
{ {
logger.debug("Error grabbing icon {}: {}", itemId, response); logger.debug("Error grabbing icon {}: {}", itemId, response);
return null; return Observable.just(null);
} }
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
@@ -167,7 +168,7 @@ public class ItemClient
if (!response.isSuccessful()) if (!response.isSuccessful())
{ {
logger.debug("Error looking up item {}: {}", itemName, response); logger.debug("Error looking up item {}: {}", itemName, response);
return null; return Observable.just(null);
} }
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
@@ -202,7 +203,7 @@ public class ItemClient
if (!response.isSuccessful()) if (!response.isSuccessful())
{ {
logger.warn("Error looking up prices: {}", response); logger.warn("Error looking up prices: {}", response);
return null; return Observable.just(null);
} }
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
@@ -238,7 +239,7 @@ public class ItemClient
if (!response.isSuccessful()) if (!response.isSuccessful())
{ {
logger.warn("Error looking up item stats: {}", response); logger.warn("Error looking up item stats: {}", response);
return null; return Observable.just(null);
} }
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();

View File

@@ -58,7 +58,7 @@ public class OSBGrandExchangeClient
{ {
if (!response.isSuccessful()) 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(); final InputStream in = response.body().byteStream();

View File

@@ -26,6 +26,7 @@
package net.runelite.http.api.worlds; package net.runelite.http.api.worlds;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import io.reactivex.Observable;
import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.RuneLiteAPI;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.Request; import okhttp3.Request;
@@ -41,7 +42,7 @@ public class WorldClient
{ {
private static final Logger logger = LoggerFactory.getLogger(WorldClient.class); private static final Logger logger = LoggerFactory.getLogger(WorldClient.class);
public WorldResult lookupWorlds() throws IOException public Observable<WorldResult> lookupWorlds()
{ {
HttpUrl url = RuneLiteAPI.getApiBase().newBuilder() HttpUrl url = RuneLiteAPI.getApiBase().newBuilder()
.addPathSegment("worlds.js") .addPathSegment("worlds.js")
@@ -49,24 +50,27 @@ public class WorldClient
logger.debug("Built URI: {}", url); logger.debug("Built URI: {}", url);
Request request = new Request.Builder() return Observable.defer(() ->
.url(url)
.build();
try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
{ {
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); if (!response.isSuccessful())
return null; {
} logger.debug("Error looking up worlds: {}", response);
return null;
}
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class); return Observable.just(RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class));
} }
catch (JsonParseException ex) catch (JsonParseException ex)
{ {
throw new IOException(ex); throw new IOException(ex);
} }
});
} }
} }