http-api: RxJava async calls
This commit is contained in:
@@ -79,6 +79,11 @@
|
|||||||
<groupId>com.squareup.okhttp3</groupId>
|
<groupId>com.squareup.okhttp3</groupId>
|
||||||
<artifactId>mockwebserver</artifactId>
|
<artifactId>mockwebserver</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.reactivex.rxjava2</groupId>
|
||||||
|
<artifactId>rxjava</artifactId>
|
||||||
|
<version>2.2.10</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
package net.runelite.http.api.osbuddy;
|
package net.runelite.http.api.osbuddy;
|
||||||
|
|
||||||
import com.google.gson.JsonParseException;
|
import com.google.gson.JsonParseException;
|
||||||
|
import io.reactivex.Observable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
@@ -37,7 +38,7 @@ import okhttp3.Response;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class OSBGrandExchangeClient
|
public class OSBGrandExchangeClient
|
||||||
{
|
{
|
||||||
public OSBGrandExchangeResult lookupItem(int itemId) throws IOException
|
public Observable<OSBGrandExchangeResult> lookupItem(int itemId)
|
||||||
{
|
{
|
||||||
final HttpUrl url = RuneLiteAPI.getApiBase().newBuilder()
|
final HttpUrl url = RuneLiteAPI.getApiBase().newBuilder()
|
||||||
.addPathSegment("osb")
|
.addPathSegment("osb")
|
||||||
@@ -47,23 +48,26 @@ public class OSBGrandExchangeClient
|
|||||||
|
|
||||||
log.debug("Built URI: {}", url);
|
log.debug("Built URI: {}", url);
|
||||||
|
|
||||||
final Request request = new Request.Builder()
|
return Observable.defer(() ->
|
||||||
.url(url)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
try (final Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
|
|
||||||
{
|
{
|
||||||
if (!response.isSuccessful())
|
Request request = new Request.Builder()
|
||||||
|
.url(url)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
try (final Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
|
||||||
{
|
{
|
||||||
throw new IOException("Error looking up item id: " + response);
|
if (!response.isSuccessful())
|
||||||
}
|
{
|
||||||
|
throw new IOException("Error looking up item id: " + response);
|
||||||
|
}
|
||||||
|
|
||||||
final InputStream in = response.body().byteStream();
|
final InputStream in = response.body().byteStream();
|
||||||
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), OSBGrandExchangeResult.class);
|
return Observable.just(RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), OSBGrandExchangeResult.class));
|
||||||
}
|
}
|
||||||
catch (JsonParseException ex)
|
catch (JsonParseException e)
|
||||||
{
|
{
|
||||||
throw new IOException(ex);
|
return Observable.error(e);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,15 +25,15 @@
|
|||||||
*/
|
*/
|
||||||
package net.runelite.client.plugins.chatcommands;
|
package net.runelite.client.plugins.chatcommands;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
import net.runelite.api.vars.AccountType;
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
import lombok.Value;
|
import lombok.Value;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.runelite.api.ChatMessageType;
|
import net.runelite.api.ChatMessageType;
|
||||||
@@ -48,6 +48,7 @@ import net.runelite.api.events.ChatMessage;
|
|||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.VarbitChanged;
|
import net.runelite.api.events.VarbitChanged;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
|
import net.runelite.api.vars.AccountType;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import static net.runelite.api.widgets.WidgetID.KILL_LOGS_GROUP_ID;
|
import static net.runelite.api.widgets.WidgetID.KILL_LOGS_GROUP_ID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
@@ -74,7 +75,6 @@ import net.runelite.http.api.hiscore.SingleHiscoreSkillResult;
|
|||||||
import net.runelite.http.api.hiscore.Skill;
|
import net.runelite.http.api.hiscore.Skill;
|
||||||
import net.runelite.http.api.item.ItemPrice;
|
import net.runelite.http.api.item.ItemPrice;
|
||||||
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
|
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
|
||||||
import net.runelite.http.api.osbuddy.OSBGrandExchangeResult;
|
|
||||||
import org.apache.commons.text.WordUtils;
|
import org.apache.commons.text.WordUtils;
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
@@ -822,49 +822,46 @@ public class ChatCommandsPlugin extends Plugin
|
|||||||
if (!results.isEmpty())
|
if (!results.isEmpty())
|
||||||
{
|
{
|
||||||
ItemPrice item = retrieveFromList(results, search);
|
ItemPrice item = retrieveFromList(results, search);
|
||||||
OSBGrandExchangeResult osbresult = new OSBGrandExchangeResult();
|
CLIENT.lookupItem(item.getId())
|
||||||
try
|
.subscribeOn(Schedulers.single())
|
||||||
{
|
.subscribe(
|
||||||
osbresult = CLIENT.lookupItem(item.getId());
|
(osbresult) ->
|
||||||
}
|
{
|
||||||
catch (IOException e)
|
int itemId = item.getId();
|
||||||
{
|
int itemPrice = itemManager.getItemPrice(itemId);
|
||||||
log.error("Error looking up prices", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
int itemId = item.getId();
|
final ChatMessageBuilder builder = new ChatMessageBuilder();
|
||||||
int itemPrice = itemManager.getItemPrice(itemId);
|
builder.append(ChatColorType.NORMAL);
|
||||||
|
builder.append(ChatColorType.HIGHLIGHT);
|
||||||
|
builder.append(item.getName());
|
||||||
|
builder.append(ChatColorType.NORMAL);
|
||||||
|
builder.append(": GE ");
|
||||||
|
builder.append(ChatColorType.HIGHLIGHT);
|
||||||
|
builder.append(StackFormatter.formatNumber(itemPrice));
|
||||||
|
builder.append(ChatColorType.NORMAL);
|
||||||
|
builder.append(": OSB ");
|
||||||
|
builder.append(ChatColorType.HIGHLIGHT);
|
||||||
|
builder.append(StackFormatter.formatNumber(osbresult.getOverall_average()));
|
||||||
|
|
||||||
final ChatMessageBuilder builder = new ChatMessageBuilder();
|
ItemDefinition itemComposition = itemManager.getItemDefinition(itemId);
|
||||||
builder.append(ChatColorType.NORMAL);
|
if (itemComposition != null)
|
||||||
builder.append(ChatColorType.HIGHLIGHT);
|
{
|
||||||
builder.append(item.getName());
|
int alchPrice = itemManager.getAlchValue(itemId);
|
||||||
builder.append(ChatColorType.NORMAL);
|
builder
|
||||||
builder.append(": GE ");
|
.append(ChatColorType.NORMAL)
|
||||||
builder.append(ChatColorType.HIGHLIGHT);
|
.append(" HA value ")
|
||||||
builder.append(StackFormatter.formatNumber(itemPrice));
|
.append(ChatColorType.HIGHLIGHT)
|
||||||
builder.append(ChatColorType.NORMAL);
|
.append(StackFormatter.formatNumber(alchPrice));
|
||||||
builder.append(": OSB ");
|
}
|
||||||
builder.append(ChatColorType.HIGHLIGHT);
|
|
||||||
builder.append(StackFormatter.formatNumber(osbresult.getOverall_average()));
|
|
||||||
|
|
||||||
ItemDefinition itemComposition = itemManager.getItemDefinition(itemId);
|
String response = builder.build();
|
||||||
if (itemComposition != null)
|
|
||||||
{
|
|
||||||
int alchPrice = itemManager.getAlchValue(itemId);
|
|
||||||
builder
|
|
||||||
.append(ChatColorType.NORMAL)
|
|
||||||
.append(" HA value ")
|
|
||||||
.append(ChatColorType.HIGHLIGHT)
|
|
||||||
.append(StackFormatter.formatNumber(alchPrice));
|
|
||||||
}
|
|
||||||
|
|
||||||
String response = builder.build();
|
log.debug("Setting response {}", response);
|
||||||
|
messageNode.setRuneLiteFormatMessage(response);
|
||||||
log.debug("Setting response {}", response);
|
chatMessageManager.update(messageNode);
|
||||||
messageNode.setRuneLiteFormatMessage(response);
|
client.refreshChat();
|
||||||
chatMessageManager.update(messageNode);
|
}
|
||||||
client.refreshChat();
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ package net.runelite.client.plugins.examine;
|
|||||||
|
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import java.io.IOException;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
@@ -57,7 +57,6 @@ import net.runelite.client.plugins.PluginDescriptor;
|
|||||||
import net.runelite.client.util.StackFormatter;
|
import net.runelite.client.util.StackFormatter;
|
||||||
import net.runelite.http.api.examine.ExamineClient;
|
import net.runelite.http.api.examine.ExamineClient;
|
||||||
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
|
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
|
||||||
import net.runelite.http.api.osbuddy.OSBGrandExchangeResult;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Submits examine info to the api
|
* Submits examine info to the api
|
||||||
@@ -365,40 +364,40 @@ public class ExaminePlugin extends Plugin
|
|||||||
|
|
||||||
if (gePrice > 0)
|
if (gePrice > 0)
|
||||||
{
|
{
|
||||||
OSBGrandExchangeResult osbresult = new OSBGrandExchangeResult();
|
int finalQuantity = quantity;
|
||||||
try
|
CLIENT.lookupItem(id)
|
||||||
{
|
.subscribeOn(Schedulers.single())
|
||||||
osbresult = CLIENT.lookupItem(id);
|
.subscribe(
|
||||||
}
|
(osbresult) ->
|
||||||
catch (IOException e)
|
{
|
||||||
{
|
message
|
||||||
log.error(e.toString());
|
.append(ChatColorType.NORMAL)
|
||||||
}
|
.append(" GE ")
|
||||||
message
|
.append(ChatColorType.HIGHLIGHT)
|
||||||
.append(ChatColorType.NORMAL)
|
.append(StackFormatter.formatNumber(gePrice * finalQuantity));
|
||||||
.append(" GE ")
|
|
||||||
.append(ChatColorType.HIGHLIGHT)
|
|
||||||
.append(StackFormatter.formatNumber(gePrice * quantity));
|
|
||||||
|
|
||||||
if (osbresult != null)
|
if (osbresult != null)
|
||||||
{
|
{
|
||||||
message
|
message
|
||||||
.append(ChatColorType.NORMAL)
|
.append(ChatColorType.NORMAL)
|
||||||
.append(" OSB ")
|
.append(" OSB ")
|
||||||
.append(ChatColorType.HIGHLIGHT)
|
.append(ChatColorType.HIGHLIGHT)
|
||||||
.append(StackFormatter.formatNumber(osbresult.getOverall_average() * quantity));
|
.append(StackFormatter.formatNumber(osbresult.getOverall_average() * finalQuantity));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quantity > 1)
|
if (finalQuantity > 1)
|
||||||
{
|
{
|
||||||
message
|
message
|
||||||
.append(ChatColorType.NORMAL)
|
.append(ChatColorType.NORMAL)
|
||||||
.append(" (")
|
.append(" (")
|
||||||
.append(ChatColorType.HIGHLIGHT)
|
.append(ChatColorType.HIGHLIGHT)
|
||||||
.append(StackFormatter.formatNumber(gePrice))
|
.append(StackFormatter.formatNumber(gePrice))
|
||||||
.append(ChatColorType.NORMAL)
|
.append(ChatColorType.NORMAL)
|
||||||
.append("ea)");
|
.append("ea)");
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
(e) -> log.error(e.toString())
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alchPrice > 0)
|
if (alchPrice > 0)
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ package net.runelite.client.plugins.grandexchange;
|
|||||||
import com.google.common.reflect.TypeToken;
|
import com.google.common.reflect.TypeToken;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -58,8 +58,8 @@ import net.runelite.api.events.GameStateChanged;
|
|||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.GrandExchangeOfferChanged;
|
import net.runelite.api.events.GrandExchangeOfferChanged;
|
||||||
import net.runelite.api.events.MenuEntryAdded;
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
import net.runelite.api.events.WidgetLoaded;
|
|
||||||
import net.runelite.api.events.ScriptCallbackEvent;
|
import net.runelite.api.events.ScriptCallbackEvent;
|
||||||
|
import net.runelite.api.events.WidgetLoaded;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
import net.runelite.api.widgets.WidgetID;
|
import net.runelite.api.widgets.WidgetID;
|
||||||
import net.runelite.api.widgets.WidgetInfo;
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
@@ -83,7 +83,6 @@ import net.runelite.client.util.Text;
|
|||||||
import net.runelite.http.api.ge.GrandExchangeClient;
|
import net.runelite.http.api.ge.GrandExchangeClient;
|
||||||
import net.runelite.http.api.ge.GrandExchangeTrade;
|
import net.runelite.http.api.ge.GrandExchangeTrade;
|
||||||
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
|
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
|
||||||
import net.runelite.http.api.osbuddy.OSBGrandExchangeResult;
|
|
||||||
|
|
||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Grand Exchange",
|
name = "Grand Exchange",
|
||||||
@@ -547,16 +546,16 @@ public class GrandExchangePlugin extends Plugin
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
CLIENT.lookupItem(itemId)
|
||||||
{
|
.subscribeOn(Schedulers.single())
|
||||||
final OSBGrandExchangeResult result = CLIENT.lookupItem(itemId);
|
.subscribe(
|
||||||
final String text = geText.getText() + OSB_GE_TEXT + StackFormatter.formatNumber(result.getOverall_average());
|
(osbresult) ->
|
||||||
geText.setText(text);
|
{
|
||||||
}
|
final String text = geText.getText() + OSB_GE_TEXT + StackFormatter.formatNumber(osbresult.getOverall_average());
|
||||||
catch (IOException e)
|
geText.setText(text);
|
||||||
{
|
},
|
||||||
log.debug("Error getting price of item {}", itemId, e);
|
(e) -> log.debug("Error getting price of item {}", itemId, e)
|
||||||
}
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user