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()
|
HttpUrl.Builder urlBuilder = RuneLiteAPI.getApiBase().newBuilder()
|
||||||
.addPathSegment("item")
|
.addPathSegment("item")
|
||||||
@@ -199,27 +199,29 @@ public class ItemClient
|
|||||||
|
|
||||||
logger.debug("Built URI: {}", url);
|
logger.debug("Built URI: {}", url);
|
||||||
|
|
||||||
|
return Observable.fromCallable(() ->
|
||||||
return Observable.defer(() ->
|
|
||||||
{
|
{
|
||||||
Request request = new Request.Builder()
|
Request request = new Request.Builder()
|
||||||
.url(url)
|
.url(url)
|
||||||
.build();
|
.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);
|
ItemPrice price = RuneLiteAPI.GSON.fromJson(reader, ItemPrice.class);
|
||||||
return Observable.just(null);
|
|
||||||
|
builder.put(
|
||||||
|
price.getId(),
|
||||||
|
price
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
InputStream in = response.body().byteStream();
|
reader.endArray();
|
||||||
return Observable.just(RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), ItemPrice[].class));
|
return builder.build();
|
||||||
}
|
|
||||||
catch (JsonParseException ex)
|
|
||||||
{
|
|
||||||
return Observable.error(ex);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public class ItemManager
|
|||||||
.build(new CacheLoader<ImageKey, AsyncBufferedImage>()
|
.build(new CacheLoader<ImageKey, AsyncBufferedImage>()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public AsyncBufferedImage load(@NotNull ImageKey key) throws Exception
|
public AsyncBufferedImage load(@NotNull ImageKey key)
|
||||||
{
|
{
|
||||||
return loadImage(key.itemId, key.itemQuantity, key.stackable);
|
return loadImage(key.itemId, key.itemQuantity, key.stackable);
|
||||||
}
|
}
|
||||||
@@ -172,7 +172,7 @@ public class ItemManager
|
|||||||
.build(new CacheLoader<Integer, ItemDefinition>()
|
.build(new CacheLoader<Integer, ItemDefinition>()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public ItemDefinition load(@NotNull Integer key) throws Exception
|
public ItemDefinition load(@NotNull Integer key)
|
||||||
{
|
{
|
||||||
return client.getItemDefinition(key);
|
return client.getItemDefinition(key);
|
||||||
}
|
}
|
||||||
@@ -184,7 +184,7 @@ public class ItemManager
|
|||||||
.build(new CacheLoader<OutlineKey, BufferedImage>()
|
.build(new CacheLoader<OutlineKey, BufferedImage>()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public BufferedImage load(@NotNull OutlineKey key) throws Exception
|
public BufferedImage load(@NotNull OutlineKey key)
|
||||||
{
|
{
|
||||||
return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor);
|
return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor);
|
||||||
}
|
}
|
||||||
@@ -199,21 +199,9 @@ public class ItemManager
|
|||||||
itemClient.getPrices()
|
itemClient.getPrices()
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.subscribe(
|
.subscribe(
|
||||||
(prices) ->
|
m -> itemPrices = m,
|
||||||
{
|
e -> log.warn("Error loading prices", e),
|
||||||
if (prices != null)
|
() -> log.debug("Loaded {} prices", itemPrices.size())
|
||||||
{
|
|
||||||
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)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user