client: use guice provided http client everywhere

This commit is contained in:
Adam
2020-06-26 13:44:14 -04:00
parent f9aea0d958
commit 47c375cb03
52 changed files with 407 additions and 244 deletions

View File

@@ -38,23 +38,27 @@ import net.runelite.api.GameState;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ClientShutdown;
import net.runelite.client.util.RunnableExceptionLogger;
import okhttp3.OkHttpClient;
@Singleton
@Slf4j
public class ClientSessionManager
{
private final SessionClient sessionClient = new SessionClient();
private final ScheduledExecutorService executorService;
private final Client client;
private final SessionClient sessionClient;
private ScheduledFuture<?> scheduledFuture;
private UUID sessionId;
@Inject
ClientSessionManager(ScheduledExecutorService executorService, @Nullable Client client)
ClientSessionManager(ScheduledExecutorService executorService,
@Nullable Client client,
OkHttpClient okHttpClient)
{
this.executorService = executorService;
this.client = client;
this.sessionClient = new SessionClient(okHttpClient);
}
public void start()

View File

@@ -76,6 +76,9 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay;
import net.runelite.client.ui.overlay.tooltip.TooltipOverlay;
import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay;
import net.runelite.client.ws.PartyService;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import org.slf4j.LoggerFactory;
@Singleton
@@ -91,6 +94,8 @@ public class RuneLite
public static final File DEFAULT_SESSION_FILE = new File(RUNELITE_DIR, "session");
public static final File DEFAULT_CONFIG_FILE = new File(RUNELITE_DIR, "settings.properties");
private static final int MAX_OKHTTP_CACHE_SIZE = 20 * 1024 * 1024; // 20mb
@Getter
private static Injector injector;
@@ -178,6 +183,7 @@ public class RuneLite
parser.accepts("developer-mode", "Enable developer tools");
parser.accepts("debug", "Show extra debugging output");
parser.accepts("safe-mode", "Disables external plugins and the GPU plugin");
parser.accepts("insecure-skip-tls-verification", "Disables TLS verification");
final ArgumentAcceptingOptionSpec<File> sessionfile = parser.accepts("sessionfile", "Use a specified session file")
.withRequiredArg()
@@ -227,12 +233,16 @@ public class RuneLite
}
});
final OkHttpClient okHttpClient = RuneLiteAPI.CLIENT.newBuilder()
.cache(new Cache(new File(CACHE_DIR, "okhttp"), MAX_OKHTTP_CACHE_SIZE))
.build();
SplashScreen.init();
SplashScreen.stage(0, "Retrieving client", "");
try
{
final ClientLoader clientLoader = new ClientLoader(options.valueOf(updateMode));
final ClientLoader clientLoader = new ClientLoader(okHttpClient, options.valueOf(updateMode));
new Thread(() ->
{
@@ -265,6 +275,7 @@ public class RuneLite
final long start = System.currentTimeMillis();
injector = Guice.createInjector(new RuneLiteModule(
okHttpClient,
clientLoader,
developerMode,
options.has("safe-mode"),

View File

@@ -50,15 +50,13 @@ import net.runelite.client.plugins.PluginManager;
import net.runelite.client.task.Scheduler;
import net.runelite.client.util.DeferredEventBus;
import net.runelite.client.util.ExecutorServiceExceptionLogger;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Cache;
import net.runelite.http.api.chat.ChatClient;
import okhttp3.OkHttpClient;
@AllArgsConstructor
public class RuneLiteModule extends AbstractModule
{
private static final int MAX_OKHTTP_CACHE_SIZE = 20 * 1024 * 1024; // 20mb
private final OkHttpClient okHttpClient;
private final Supplier<Applet> clientLoader;
private final boolean developerMode;
private final boolean safeMode;
@@ -73,9 +71,7 @@ public class RuneLiteModule extends AbstractModule
bind(File.class).annotatedWith(Names.named("sessionfile")).toInstance(sessionfile);
bind(File.class).annotatedWith(Names.named("config")).toInstance(config);
bind(ScheduledExecutorService.class).toInstance(new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor()));
bind(OkHttpClient.class).toInstance(RuneLiteAPI.CLIENT.newBuilder()
.cache(new Cache(new File(RuneLite.CACHE_DIR, "okhttp"), MAX_OKHTTP_CACHE_SIZE))
.build());
bind(OkHttpClient.class).toInstance(okHttpClient);
bind(MenuManager.class);
bind(ChatMessageManager.class);
bind(ItemManager.class);
@@ -120,4 +116,11 @@ public class RuneLiteModule extends AbstractModule
{
return configManager.getConfig(ChatColorConfig.class);
}
@Provides
@Singleton
ChatClient provideChatClient(OkHttpClient okHttpClient)
{
return new ChatClient(okHttpClient);
}
}

View File

@@ -29,15 +29,20 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.UUID;
import lombok.AllArgsConstructor;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
@AllArgsConstructor
class SessionClient
{
private final OkHttpClient okHttpClient;
UUID open() throws IOException
{
HttpUrl url = RuneLiteAPI.getSessionBase().newBuilder()
@@ -48,7 +53,7 @@ class SessionClient
.url(url)
.build();
try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
try (Response response = okHttpClient.newCall(request).execute())
{
ResponseBody body = response.body();
@@ -74,7 +79,7 @@ class SessionClient
.url(url)
.build();
try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
try (Response response = okHttpClient.newCall(request).execute())
{
if (!response.isSuccessful())
{
@@ -94,6 +99,6 @@ class SessionClient
.url(url)
.build();
RuneLiteAPI.CLIENT.newCall(request).execute().close();
okHttpClient.newCall(request).execute().close();
}
}

View File

@@ -47,6 +47,7 @@ import net.runelite.client.ws.WSClient;
import net.runelite.http.api.account.AccountClient;
import net.runelite.http.api.account.OAuthResponse;
import net.runelite.http.api.ws.messages.LoginResponse;
import okhttp3.OkHttpClient;
@Singleton
@Slf4j
@@ -59,18 +60,21 @@ public class SessionManager
private final ConfigManager configManager;
private final WSClient wsClient;
private final File sessionFile;
private final AccountClient accountClient;
@Inject
private SessionManager(
@Named("sessionfile") File sessionfile,
ConfigManager configManager,
EventBus eventBus,
WSClient wsClient)
WSClient wsClient,
OkHttpClient okHttpClient)
{
this.configManager = configManager;
this.eventBus = eventBus;
this.wsClient = wsClient;
this.sessionFile = sessionfile;
this.accountClient = new AccountClient(okHttpClient);
eventBus.register(this);
}
@@ -98,7 +102,7 @@ public class SessionManager
}
// Check if session is still valid
AccountClient accountClient = new AccountClient(session.getUuid());
accountClient.setUuid(session.getUuid());
if (!accountClient.sessionCheck())
{
log.debug("Loaded session {} is invalid", session.getUuid());
@@ -169,10 +173,10 @@ public class SessionManager
log.debug("Logging out of account {}", accountSession.getUsername());
AccountClient client = new AccountClient(accountSession.getUuid());
accountClient.setUuid(accountSession.getUuid());
try
{
client.logout();
accountClient.logout();
}
catch (IOException ex)
{
@@ -191,13 +195,13 @@ public class SessionManager
{
// If a session is already open, use that id. Otherwise generate a new id.
UUID uuid = wsClient.getSessionId() != null ? wsClient.getSessionId() : UUID.randomUUID();
AccountClient loginClient = new AccountClient(uuid);
accountClient.setUuid(uuid);
final OAuthResponse login;
try
{
login = loginClient.login();
login = accountClient.login();
}
catch (IOException ex)
{

View File

@@ -78,6 +78,7 @@ import net.runelite.client.util.ColorUtil;
import net.runelite.http.api.config.ConfigClient;
import net.runelite.http.api.config.ConfigEntry;
import net.runelite.http.api.config.Configuration;
import okhttp3.OkHttpClient;
@Singleton
@Slf4j
@@ -85,10 +86,9 @@ public class ConfigManager
{
private static final DateFormat TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
@Inject
EventBus eventBus;
private final ScheduledExecutorService executor;
private final File settingsFileInput;
private final EventBus eventBus;
private final OkHttpClient okHttpClient;
private AccountSession session;
private ConfigClient client;
@@ -97,18 +97,20 @@ public class ConfigManager
private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this);
private final Properties properties = new Properties();
private final Map<String, String> pendingChanges = new HashMap<>();
private final File settingsFileInput;
@Inject
public ConfigManager(
@Named("config") File config,
ScheduledExecutorService scheduledExecutorService)
ScheduledExecutorService scheduledExecutorService,
EventBus eventBus,
OkHttpClient okHttpClient)
{
this.executor = scheduledExecutorService;
this.settingsFileInput = config;
this.eventBus = eventBus;
this.okHttpClient = okHttpClient;
this.propertiesFile = getPropertiesFile();
executor.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS);
scheduledExecutorService.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS);
}
public final void switchSession(AccountSession session)
@@ -124,7 +126,7 @@ public class ConfigManager
else
{
this.session = session;
this.client = new ConfigClient(session.getUuid());
this.client = new ConfigClient(okHttpClient, session.getUuid());
}
this.propertiesFile = getPropertiesFile();

View File

@@ -64,8 +64,8 @@ import net.runelite.client.ui.SplashScreen;
import net.runelite.client.util.CountingInputStream;
import net.runelite.client.util.Text;
import net.runelite.client.util.VerificationException;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@@ -95,6 +95,9 @@ public class ExternalPluginManager
@Inject
private EventBus eventBus;
@Inject
private OkHttpClient okHttpClient;
public void loadExternalPlugins() throws PluginInstantiationException
{
refreshPlugins();
@@ -208,7 +211,7 @@ public class ExternalPluginManager
.addPathSegment(manifest.getCommit() + ".jar")
.build();
try (Response res = RuneLiteAPI.CLIENT.newCall(new Request.Builder().url(url).build()).execute())
try (Response res = okHttpClient.newCall(new Request.Builder().url(url).build()).execute())
{
int fdownloaded = downloaded;
downloaded += manifest.getSize();

View File

@@ -33,11 +33,10 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.AllArgsConstructor;
import lombok.Data;
import net.runelite.api.Client;
import net.runelite.client.callback.ClientThread;
import net.runelite.http.api.hiscore.HiscoreClient;
import net.runelite.http.api.hiscore.HiscoreEndpoint;
import net.runelite.http.api.hiscore.HiscoreResult;
import okhttp3.OkHttpClient;
@Singleton
public class HiscoreManager
@@ -53,12 +52,13 @@ public class HiscoreManager
static final HiscoreResult EMPTY = new HiscoreResult();
static final HiscoreResult NONE = new HiscoreResult();
private final HiscoreClient hiscoreClient = new HiscoreClient();
private final LoadingCache<HiscoreKey, HiscoreResult> hiscoreCache;
private final HiscoreClient hiscoreClient;
@Inject
public HiscoreManager(Client client, ScheduledExecutorService executor, ClientThread clientThread)
public HiscoreManager(ScheduledExecutorService executor, OkHttpClient okHttpClient)
{
hiscoreClient = new HiscoreClient(okHttpClient);
hiscoreCache = CacheBuilder.newBuilder()
.maximumSize(128L)
.expireAfterWrite(1, TimeUnit.HOURS)

View File

@@ -60,6 +60,7 @@ import net.runelite.client.util.AsyncBufferedImage;
import net.runelite.http.api.item.ItemClient;
import net.runelite.http.api.item.ItemPrice;
import net.runelite.http.api.item.ItemStats;
import okhttp3.OkHttpClient;
@Singleton
@Slf4j
@@ -82,10 +83,9 @@ public class ItemManager
}
private final Client client;
private final ScheduledExecutorService scheduledExecutorService;
private final ClientThread clientThread;
private final ItemClient itemClient;
private Map<Integer, ItemPrice> itemPrices = Collections.emptyMap();
private Map<Integer, ItemStats> itemStats = Collections.emptyMap();
private final LoadingCache<ImageKey, AsyncBufferedImage> itemImages;
@@ -162,13 +162,12 @@ public class ItemManager
build();
@Inject
public ItemManager(Client client, ScheduledExecutorService executor, ClientThread clientThread,
ItemClient itemClient)
public ItemManager(Client client, ScheduledExecutorService scheduledExecutorService, ClientThread clientThread,
OkHttpClient okHttpClient)
{
this.client = client;
this.scheduledExecutorService = executor;
this.clientThread = clientThread;
this.itemClient = itemClient;
this.itemClient = new ItemClient(okHttpClient);
scheduledExecutorService.scheduleWithFixedDelay(this::loadPrices, 0, 30, TimeUnit.MINUTES);
scheduledExecutorService.submit(this::loadStats);

View File

@@ -43,6 +43,7 @@ import net.runelite.client.util.RunnableExceptionLogger;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient;
import net.runelite.http.api.worlds.WorldResult;
import okhttp3.OkHttpClient;
@Singleton
@Slf4j
@@ -59,12 +60,12 @@ public class WorldService
private WorldResult worlds;
@Inject
private WorldService(Client client, ScheduledExecutorService scheduledExecutorService, WorldClient worldClient,
private WorldService(Client client, ScheduledExecutorService scheduledExecutorService, OkHttpClient okHttpClient,
EventBus eventBus)
{
this.client = client;
this.scheduledExecutorService = scheduledExecutorService;
this.worldClient = worldClient;
this.worldClient = new WorldClient(okHttpClient);
this.eventBus = eventBus;
scheduledExecutorService.scheduleWithFixedDelay(RunnableExceptionLogger.wrap(this::tick), 0, WORLD_FETCH_TIMER, TimeUnit.MINUTES);

View File

@@ -80,6 +80,7 @@ import net.runelite.http.api.hiscore.HiscoreSkill;
import net.runelite.http.api.hiscore.SingleHiscoreSkillResult;
import net.runelite.http.api.hiscore.Skill;
import net.runelite.http.api.item.ItemPrice;
import okhttp3.OkHttpClient;
import org.apache.commons.text.WordUtils;
@PluginDescriptor(
@@ -128,8 +129,6 @@ public class ChatCommandsPlugin extends Plugin
@VisibleForTesting
static final int ADV_LOG_EXPLOITS_TEXT_INDEX = 1;
private final ChatClient chatClient = new ChatClient();
private boolean bossLogLoaded;
private boolean advLogLoaded;
private boolean scrollInterfaceLoaded;
@@ -168,6 +167,9 @@ public class ChatCommandsPlugin extends Plugin
@Inject
private HiscoreClient hiscoreClient;
@Inject
private ChatClient chatClient;
@Override
public void startUp()
{
@@ -213,6 +215,12 @@ public class ChatCommandsPlugin extends Plugin
return configManager.getConfig(ChatCommandsConfig.class);
}
@Provides
HiscoreClient provideHiscoreClient(OkHttpClient okHttpClient)
{
return new HiscoreClient(okHttpClient);
}
private void setKc(String boss, int killcount)
{
configManager.setConfiguration("killcount." + client.getUsername().toLowerCase(),

View File

@@ -43,7 +43,6 @@ import net.runelite.api.GameState;
import net.runelite.api.Skill;
import net.runelite.api.WorldType;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.StatChanged;
import net.runelite.api.events.VarbitChanged;
@@ -54,6 +53,7 @@ import net.runelite.client.discord.events.DiscordJoinGame;
import net.runelite.client.discord.events.DiscordJoinRequest;
import net.runelite.client.discord.events.DiscordReady;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.PartyChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -65,12 +65,12 @@ import net.runelite.client.util.LinkBrowser;
import net.runelite.client.ws.PartyMember;
import net.runelite.client.ws.PartyService;
import net.runelite.client.ws.WSClient;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.ws.messages.party.UserJoin;
import net.runelite.http.api.ws.messages.party.UserPart;
import net.runelite.http.api.ws.messages.party.UserSync;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@@ -103,6 +103,9 @@ public class DiscordPlugin extends Plugin
@Inject
private WSClient wsClient;
@Inject
private OkHttpClient okHttpClient;
private Map<Skill, Integer> skillExp = new HashMap<>();
private NavigationButton discordButton;
private boolean loginFlag;
@@ -273,7 +276,7 @@ public class DiscordPlugin extends Plugin
.url(url)
.build();
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
okHttpClient.newCall(request).enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException e)

View File

@@ -27,6 +27,7 @@ package net.runelite.client.plugins.examine;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.inject.Provides;
import java.time.Instant;
import java.util.ArrayDeque;
import java.util.Deque;
@@ -58,6 +59,7 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.QuantityFormatter;
import net.runelite.client.util.Text;
import net.runelite.http.api.examine.ExamineClient;
import okhttp3.OkHttpClient;
/**
* Submits examine info to the api
@@ -91,6 +93,12 @@ public class ExaminePlugin extends Plugin
@Inject
private ChatMessageManager chatMessageManager;
@Provides
ExamineClient provideExamineClient(OkHttpClient okHttpClient)
{
return new ExamineClient(okHttpClient);
}
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{

View File

@@ -41,6 +41,8 @@ import java.time.Instant;
import java.util.Comparator;
import java.util.function.Supplier;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
@@ -55,17 +57,18 @@ import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.PluginPanel;
import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.LinkBrowser;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.feed.FeedItem;
import net.runelite.http.api.feed.FeedItemType;
import net.runelite.http.api.feed.FeedResult;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
@Slf4j
@Singleton
class FeedPanel extends PluginPanel
{
private static final ImageIcon RUNELITE_ICON;
@@ -104,12 +107,15 @@ class FeedPanel extends PluginPanel
private final FeedConfig config;
private final Supplier<FeedResult> feedSupplier;
private final OkHttpClient okHttpClient;
FeedPanel(FeedConfig config, Supplier<FeedResult> feedSupplier)
@Inject
FeedPanel(FeedConfig config, Supplier<FeedResult> feedSupplier, OkHttpClient okHttpClient)
{
super(true);
this.config = config;
this.feedSupplier = feedSupplier;
this.okHttpClient = okHttpClient;
setBorder(new EmptyBorder(10, 10, 10, 10));
setBackground(ColorScheme.DARK_GRAY_COLOR);
@@ -158,7 +164,7 @@ class FeedPanel extends PluginPanel
.url(item.getAvatar())
.build();
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
okHttpClient.newCall(request).enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException e)

View File

@@ -25,7 +25,9 @@
package net.runelite.client.plugins.feed;
import com.google.common.base.Suppliers;
import com.google.inject.Binder;
import com.google.inject.Provides;
import com.google.inject.TypeLiteral;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.time.temporal.ChronoUnit;
@@ -34,9 +36,9 @@ import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule;
@@ -45,6 +47,7 @@ import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
import net.runelite.http.api.feed.FeedClient;
import net.runelite.http.api.feed.FeedResult;
import okhttp3.OkHttpClient;
@PluginDescriptor(
name = "News Feed",
@@ -70,7 +73,7 @@ public class FeedPlugin extends Plugin
private FeedPanel feedPanel;
private NavigationButton navButton;
private Supplier<FeedResult> feedSupplier = Suppliers.memoizeWithExpiration(() ->
private final Supplier<FeedResult> feedSupplier = Suppliers.memoizeWithExpiration(() ->
{
try
{
@@ -83,10 +86,19 @@ public class FeedPlugin extends Plugin
return null;
}, 10, TimeUnit.MINUTES);
@Override
public void configure(Binder binder)
{
// CHECKSTYLE:OFF
binder.bind(new TypeLiteral<Supplier<FeedResult>>(){})
.toInstance(feedSupplier);
// CHECKSTYLE:ON
}
@Override
protected void startUp() throws Exception
{
feedPanel = new FeedPanel(config, feedSupplier);
feedPanel = injector.getInstance(FeedPanel.class);
final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "icon.png");
@@ -136,4 +148,10 @@ public class FeedPlugin extends Plugin
{
return configManager.getConfig(FeedConfig.class);
}
@Provides
FeedClient provideFeedClient(OkHttpClient okHttpClient)
{
return new FeedClient(okHttpClient);
}
}

View File

@@ -105,6 +105,7 @@ import net.runelite.http.api.item.ItemStats;
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
import net.runelite.http.api.osbuddy.OSBGrandExchangeResult;
import net.runelite.http.api.worlds.WorldType;
import okhttp3.OkHttpClient;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.text.similarity.FuzzyScore;
@@ -119,7 +120,6 @@ public class GrandExchangePlugin extends Plugin
private static final int GE_SLOTS = 8;
private static final int OFFER_CONTAINER_ITEM = 21;
private static final int OFFER_DEFAULT_ITEM_ID = 6512;
private static final OSBGrandExchangeClient CLIENT = new OSBGrandExchangeClient();
private static final String OSB_GE_TEXT = "<br>OSBuddy Actively traded price: ";
private static final String BUY_LIMIT_GE_TEXT = "<br>Buy limit: ";
@@ -190,6 +190,9 @@ public class GrandExchangePlugin extends Plugin
private boolean loginBurstGeUpdates;
private static String machineUuid;
@Inject
private OSBGrandExchangeClient osbGrandExchangeClient;
private boolean wasFuzzySearch;
static
@@ -291,6 +294,18 @@ public class GrandExchangePlugin extends Plugin
return configManager.getConfig(GrandExchangeConfig.class);
}
@Provides
OSBGrandExchangeClient provideOsbGrandExchangeClient(OkHttpClient okHttpClient)
{
return new OSBGrandExchangeClient(okHttpClient);
}
@Provides
GrandExchangeClient provideGrandExchangeClient(OkHttpClient okHttpClient)
{
return new GrandExchangeClient(okHttpClient);
}
@Override
protected void startUp()
{
@@ -902,7 +917,7 @@ public class GrandExchangePlugin extends Plugin
{
try
{
final OSBGrandExchangeResult result = CLIENT.lookupItem(itemId);
final OSBGrandExchangeResult result = osbGrandExchangeClient.lookupItem(itemId);
if (result != null && result.getOverall_average() > 0)
{
osbGrandExchangeResult = result;

View File

@@ -70,6 +70,7 @@ import net.runelite.http.api.hiscore.HiscoreSkill;
import static net.runelite.http.api.hiscore.HiscoreSkill.*;
import net.runelite.http.api.hiscore.HiscoreSkillType;
import net.runelite.http.api.hiscore.Skill;
import okhttp3.OkHttpClient;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
@@ -118,15 +119,11 @@ public class HiscorePanel extends PluginPanel
HiscoreEndpoint.NORMAL, HiscoreEndpoint.IRONMAN, HiscoreEndpoint.HARDCORE_IRONMAN, HiscoreEndpoint.ULTIMATE_IRONMAN, HiscoreEndpoint.DEADMAN, HiscoreEndpoint.TOURNAMENT
};
@Inject
ScheduledExecutorService executor;
@Inject
@Nullable
private Client client;
private final ScheduledExecutorService executor;
private final Client client;
private final HiscoreConfig config;
private final NameAutocompleter nameAutocompleter;
private final HiscoreClient hiscoreClient;
private final IconTextField searchBar;
@@ -136,10 +133,6 @@ public class HiscorePanel extends PluginPanel
/* Container of all the selectable endpoints (ironman, deadman, etc) */
private final MaterialTabGroup tabGroup;
private final HiscoreClient hiscoreClient = new HiscoreClient();
private HiscoreResult result;
/* The currently selected endpoint */
private HiscoreEndpoint selectedEndPoint;
@@ -147,11 +140,14 @@ public class HiscorePanel extends PluginPanel
private boolean loading = false;
@Inject
public HiscorePanel(HiscoreConfig config, NameAutocompleter nameAutocompleter)
public HiscorePanel(ScheduledExecutorService scheduledExecutorService, @Nullable Client client,
HiscoreConfig config, NameAutocompleter nameAutocompleter, OkHttpClient okHttpClient)
{
super();
this.executor = scheduledExecutorService;
this.client = client;
this.config = config;
this.nameAutocompleter = nameAutocompleter;
this.hiscoreClient = new HiscoreClient(okHttpClient);
// The layout seems to be ignoring the top margin and only gives it
// a 2-3 pixel margin, so I set the value to 18 to compensate
@@ -405,6 +401,7 @@ public class HiscorePanel extends PluginPanel
selectedEndPoint = HiscoreEndpoint.NORMAL;
}
HiscoreResult result;
try
{
log.debug("Hiscore endpoint " + selectedEndPoint.name() + " selected");

View File

@@ -111,6 +111,7 @@ import net.runelite.http.api.loottracker.LootAggregate;
import net.runelite.http.api.loottracker.LootRecord;
import net.runelite.http.api.loottracker.LootRecordType;
import net.runelite.http.api.loottracker.LootTrackerClient;
import okhttp3.OkHttpClient;
import org.apache.commons.text.WordUtils;
@PluginDescriptor(
@@ -234,6 +235,9 @@ public class LootTrackerPlugin extends Plugin
@Inject
private LootManager lootManager;
@Inject
private OkHttpClient okHttpClient;
private LootTrackerPanel panel;
private NavigationButton navButton;
@VisibleForTesting
@@ -293,7 +297,7 @@ public class LootTrackerPlugin extends Plugin
AccountSession accountSession = sessionManager.getAccountSession();
if (accountSession.getUuid() != null)
{
lootTrackerClient = new LootTrackerClient(accountSession.getUuid());
lootTrackerClient = new LootTrackerClient(okHttpClient, accountSession.getUuid());
}
else
{
@@ -341,7 +345,7 @@ public class LootTrackerPlugin extends Plugin
AccountSession accountSession = sessionManager.getAccountSession();
if (accountSession != null)
{
lootTrackerClient = new LootTrackerClient(accountSession.getUuid());
lootTrackerClient = new LootTrackerClient(okHttpClient, accountSession.getUuid());
clientThread.invokeLater(() ->
{

View File

@@ -90,9 +90,9 @@ import net.runelite.client.plugins.raids.solver.Layout;
import net.runelite.client.plugins.raids.solver.LayoutSolver;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.QuantityFormatter;
import net.runelite.client.util.HotkeyListener;
import net.runelite.client.util.ImageCapture;
import net.runelite.client.util.QuantityFormatter;
import net.runelite.client.util.Text;
import static net.runelite.client.util.Text.sanitize;
import net.runelite.client.ws.PartyMember;

View File

@@ -243,7 +243,7 @@ public class SlayerPlugin extends Plugin
}
@Provides
SlayerConfig getConfig(ConfigManager configManager)
SlayerConfig provideSlayerConfig(ConfigManager configManager)
{
return configManager.getConfig(SlayerConfig.class);
}

View File

@@ -49,10 +49,10 @@ import net.runelite.client.callback.ClientThread;
import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.game.chatbox.ChatboxTextInput;
import net.runelite.client.util.LinkBrowser;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@@ -66,6 +66,7 @@ public class WikiSearchChatboxTextInput extends ChatboxTextInput
private static final int PREDICTION_DEBOUNCE_DELAY_MS = 200;
private final ChatboxPanelManager chatboxPanelManager;
private final OkHttpClient okHttpClient;
private final Gson gson = new Gson();
private Future<?> runningRequest = null;
@@ -76,10 +77,12 @@ public class WikiSearchChatboxTextInput extends ChatboxTextInput
@Inject
public WikiSearchChatboxTextInput(ChatboxPanelManager chatboxPanelManager, ClientThread clientThread,
ScheduledExecutorService scheduledExecutorService, @Named("developerMode") final boolean developerMode)
ScheduledExecutorService scheduledExecutorService, @Named("developerMode") final boolean developerMode,
OkHttpClient okHttpClient)
{
super(chatboxPanelManager, clientThread);
this.chatboxPanelManager = chatboxPanelManager;
this.okHttpClient = okHttpClient;
lines(1);
prompt("OSRS Wiki Search");
@@ -122,7 +125,7 @@ public class WikiSearchChatboxTextInput extends ChatboxTextInput
.url(url)
.build();
RuneLiteAPI.CLIENT.newCall(req).enqueue(new Callback()
okHttpClient.newCall(req).enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException e)

View File

@@ -73,6 +73,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text;
import net.runelite.http.api.xp.XpClient;
import okhttp3.OkHttpClient;
@PluginDescriptor(
name = "XP Tracker",
@@ -116,6 +117,9 @@ public class XpTrackerPlugin extends Plugin
@Inject
private OverlayManager overlayManager;
@Inject
private XpClient xpClient;
private NavigationButton navButton;
@Setter(AccessLevel.PACKAGE)
@VisibleForTesting
@@ -127,7 +131,6 @@ public class XpTrackerPlugin extends Plugin
private long lastXp = 0;
private boolean initializeTracker;
private final XpClient xpClient = new XpClient();
private final XpState xpState = new XpState();
private final XpPauseState xpPauseState = new XpPauseState();
@@ -137,6 +140,12 @@ public class XpTrackerPlugin extends Plugin
return configManager.getConfig(XpTrackerConfig.class);
}
@Provides
XpClient provideXpClient(OkHttpClient okHttpClient)
{
return new XpClient(okHttpClient);
}
@Override
public void configure(Binder binder)
{

View File

@@ -26,10 +26,10 @@
*/
package net.runelite.client.plugins.xpupdater;
import com.google.inject.Provides;
import java.io.IOException;
import java.util.Objects;
import javax.inject.Inject;
import com.google.inject.Provides;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
@@ -40,11 +40,11 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
@@ -66,13 +66,16 @@ public class XpUpdaterPlugin extends Plugin
@Inject
private Client client;
@Inject
private XpUpdaterConfig config;
@Inject
private OkHttpClient okHttpClient;
private String lastUsername;
private boolean fetchXp;
private long lastXp;
@Inject
private XpUpdaterConfig config;
@Provides
XpUpdaterConfig getConfig(ConfigManager configManager)
{
@@ -191,9 +194,9 @@ public class XpUpdaterPlugin extends Plugin
}
}
private static void sendRequest(String platform, Request request)
private void sendRequest(String platform, Request request)
{
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
okHttpClient.newCall(request).enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException e)

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.xtea;
import com.google.inject.Provides;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
@@ -37,6 +38,7 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.http.api.xtea.XteaClient;
import net.runelite.http.api.xtea.XteaKey;
import net.runelite.http.api.xtea.XteaRequest;
import okhttp3.OkHttpClient;
@PluginDescriptor(
name = "Xtea",
@@ -45,13 +47,20 @@ import net.runelite.http.api.xtea.XteaRequest;
@Slf4j
public class XteaPlugin extends Plugin
{
private final XteaClient xteaClient = new XteaClient();
private final Set<Integer> sentRegions = new HashSet<>();
@Inject
private Client client;
@Inject
private XteaClient xteaClient;
@Provides
XteaClient provideXteaClient(OkHttpClient okHttpClient)
{
return new XteaClient(okHttpClient);
}
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{

View File

@@ -28,18 +28,18 @@ package net.runelite.client.rs;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import net.runelite.http.api.RuneLiteAPI;
import lombok.AllArgsConstructor;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@AllArgsConstructor
class ClientConfigLoader
{
private ClientConfigLoader()
{
}
private final OkHttpClient okHttpClient;
static RSConfig fetch(HttpUrl url) throws IOException
RSConfig fetch(HttpUrl url) throws IOException
{
final Request request = new Request.Builder()
.url(url)
@@ -47,7 +47,7 @@ class ClientConfigLoader
final RSConfig config = new RSConfig();
try (final Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
try (final Response response = okHttpClient.newCall(request).execute())
{
if (!response.isSuccessful())
{

View File

@@ -68,9 +68,9 @@ import net.runelite.client.ui.FatalErrorDialog;
import net.runelite.client.ui.SplashScreen;
import net.runelite.client.util.CountingInputStream;
import net.runelite.client.util.VerificationException;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.worlds.World;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
@@ -83,14 +83,19 @@ public class ClientLoader implements Supplier<Applet>
private static File VANILLA_CACHE = new File(RuneLite.CACHE_DIR, "vanilla.cache");
private static File PATCHED_CACHE = new File(RuneLite.CACHE_DIR, "patched.cache");
private final OkHttpClient okHttpClient;
private final ClientConfigLoader clientConfigLoader;
private ClientUpdateCheckMode updateCheckMode;
private Object client = null;
private final WorldSupplier worldSupplier;
private WorldSupplier worldSupplier = new WorldSupplier();
private Object client;
public ClientLoader(ClientUpdateCheckMode updateCheckMode)
public ClientLoader(OkHttpClient okHttpClient, ClientUpdateCheckMode updateCheckMode)
{
this.okHttpClient = okHttpClient;
this.clientConfigLoader = new ClientConfigLoader(okHttpClient);
this.updateCheckMode = updateCheckMode;
this.worldSupplier = new WorldSupplier(okHttpClient);
}
@Override
@@ -187,7 +192,7 @@ public class ClientLoader implements Supplier<Applet>
{
try
{
RSConfig config = ClientConfigLoader.fetch(url);
RSConfig config = clientConfigLoader.fetch(url);
if (Strings.isNullOrEmpty(config.getCodeBase()) || Strings.isNullOrEmpty(config.getInitialJar()) || Strings.isNullOrEmpty(config.getInitialClass()))
{
@@ -221,7 +226,7 @@ public class ClientLoader implements Supplier<Applet>
@Nonnull
private RSConfig downloadFallbackConfig() throws IOException
{
RSConfig backupConfig = ClientConfigLoader.fetch(HttpUrl.parse(RuneLiteProperties.getJavConfigBackup()));
RSConfig backupConfig = clientConfigLoader.fetch(HttpUrl.parse(RuneLiteProperties.getJavConfigBackup()));
if (Strings.isNullOrEmpty(backupConfig.getCodeBase()) || Strings.isNullOrEmpty(backupConfig.getInitialJar()) || Strings.isNullOrEmpty(backupConfig.getInitialClass()))
{
@@ -298,7 +303,7 @@ public class ClientLoader implements Supplier<Applet>
.url(url)
.build();
try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute())
try (Response response = okHttpClient.newCall(request).execute())
{
// Its important to not close the response manually - this should be the only close or
// try-with-resources on this stream or it's children

View File

@@ -33,15 +33,18 @@ import java.util.Queue;
import java.util.Random;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient;
import net.runelite.http.api.worlds.WorldType;
import okhttp3.OkHttpClient;
@Slf4j
@RequiredArgsConstructor
class WorldSupplier implements Supplier<World>
{
private final OkHttpClient okHttpClient;
private final Random random = new Random(System.nanoTime());
private Queue<World> worlds = new ArrayDeque<>();
@@ -55,7 +58,7 @@ class WorldSupplier implements Supplier<World>
try
{
List<World> newWorlds = new WorldClient(RuneLiteAPI.CLIENT)
List<World> newWorlds = new WorldClient(okHttpClient)
.lookupWorlds()
.getWorlds()
.stream()

View File

@@ -58,6 +58,7 @@ import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.HttpUrl;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
@@ -76,6 +77,9 @@ public class ImageCapture
@Inject
private Notifier notifier;
@Inject
private OkHttpClient okHttpClient;
/**
* Saves a screenshot of the client window to the screenshot folder as a PNG,
* and optionally uploads it to an image-hosting service.
@@ -197,7 +201,7 @@ public class ImageCapture
.post(RequestBody.create(JSON, json))
.build();
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
okHttpClient.newCall(request).enqueue(new Callback()
{
@Override
public void onFailure(Call call, IOException ex)

View File

@@ -40,6 +40,7 @@ import net.runelite.http.api.ws.WebsocketGsonFactory;
import net.runelite.http.api.ws.WebsocketMessage;
import net.runelite.http.api.ws.messages.Handshake;
import net.runelite.http.api.ws.messages.party.PartyMessage;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.WebSocket;
@@ -50,6 +51,7 @@ import okhttp3.WebSocketListener;
public class WSClient extends WebSocketListener implements AutoCloseable
{
private final EventBus eventBus;
private final OkHttpClient okHttpClient;
private final Collection<Class<? extends WebsocketMessage>> messages = new HashSet<>();
private volatile Gson gson;
@@ -58,9 +60,10 @@ public class WSClient extends WebSocketListener implements AutoCloseable
private WebSocket webSocket;
@Inject
private WSClient(EventBus eventBus)
private WSClient(EventBus eventBus, OkHttpClient okHttpClient)
{
this.eventBus = eventBus;
this.okHttpClient = okHttpClient;
this.gson = WebsocketGsonFactory.build(WebsocketGsonFactory.factory(messages));
}
@@ -101,7 +104,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable
.url(RuneLiteAPI.getWsEndpoint())
.build();
webSocket = RuneLiteAPI.CLIENT.newWebSocket(request, this);
webSocket = okHttpClient.newWebSocket(request, this);
Handshake handshake = new Handshake();
handshake.setSession(sessionId);