increase http api item price parsing by a slightly really negligible amt
This commit is contained in:
@@ -189,7 +189,7 @@ public class ItemClient
|
||||
});
|
||||
}
|
||||
|
||||
public Observable<ItemPrice[]> getPrices()
|
||||
public Observable<ImmutableMap<Integer, ItemPrice>> getPrices()
|
||||
{
|
||||
HttpUrl.Builder urlBuilder = RuneLiteAPI.getApiBase().newBuilder()
|
||||
.addPathSegment("item")
|
||||
@@ -199,27 +199,29 @@ public class ItemClient
|
||||
|
||||
logger.debug("Built URI: {}", url);
|
||||
|
||||
|
||||
return Observable.defer(() ->
|
||||
return Observable.fromCallable(() ->
|
||||
{
|
||||
Request request = new Request.Builder()
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
try (Response response = client.newCall(request).execute())
|
||||
try (JsonReader reader = new JsonReader(client.newCall(request).execute().body().charStream()))
|
||||
{
|
||||
if (!response.isSuccessful())
|
||||
ImmutableMap.Builder<Integer, ItemPrice> builder = ImmutableMap.builderWithExpectedSize(3666);
|
||||
reader.beginArray();
|
||||
|
||||
while (reader.hasNext())
|
||||
{
|
||||
logger.warn("Error looking up prices: {}", response);
|
||||
return Observable.just(null);
|
||||
ItemPrice price = RuneLiteAPI.GSON.fromJson(reader, ItemPrice.class);
|
||||
|
||||
builder.put(
|
||||
price.getId(),
|
||||
price
|
||||
);
|
||||
}
|
||||
|
||||
InputStream in = response.body().byteStream();
|
||||
return Observable.just(RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), ItemPrice[].class));
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
{
|
||||
return Observable.error(ex);
|
||||
reader.endArray();
|
||||
return builder.build();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ public class ItemManager
|
||||
.build(new CacheLoader<ImageKey, AsyncBufferedImage>()
|
||||
{
|
||||
@Override
|
||||
public AsyncBufferedImage load(@NotNull ImageKey key) throws Exception
|
||||
public AsyncBufferedImage load(@NotNull ImageKey key)
|
||||
{
|
||||
return loadImage(key.itemId, key.itemQuantity, key.stackable);
|
||||
}
|
||||
@@ -172,7 +172,7 @@ public class ItemManager
|
||||
.build(new CacheLoader<Integer, ItemDefinition>()
|
||||
{
|
||||
@Override
|
||||
public ItemDefinition load(@NotNull Integer key) throws Exception
|
||||
public ItemDefinition load(@NotNull Integer key)
|
||||
{
|
||||
return client.getItemDefinition(key);
|
||||
}
|
||||
@@ -184,7 +184,7 @@ public class ItemManager
|
||||
.build(new CacheLoader<OutlineKey, BufferedImage>()
|
||||
{
|
||||
@Override
|
||||
public BufferedImage load(@NotNull OutlineKey key) throws Exception
|
||||
public BufferedImage load(@NotNull OutlineKey key)
|
||||
{
|
||||
return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor);
|
||||
}
|
||||
@@ -199,21 +199,9 @@ public class ItemManager
|
||||
itemClient.getPrices()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(
|
||||
(prices) ->
|
||||
{
|
||||
if (prices != null)
|
||||
{
|
||||
ImmutableMap.Builder<Integer, ItemPrice> map = ImmutableMap.builderWithExpectedSize(prices.length);
|
||||
for (ItemPrice price : prices)
|
||||
{
|
||||
map.put(price.getId(), price);
|
||||
}
|
||||
itemPrices = map.build();
|
||||
}
|
||||
|
||||
log.debug("Loaded {} prices", itemPrices.size());
|
||||
},
|
||||
(e) -> log.warn("error loading prices!", e)
|
||||
m -> itemPrices = m,
|
||||
e -> log.warn("Error loading prices", e),
|
||||
() -> log.debug("Loaded {} prices", itemPrices.size())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user