client: use guice provided http client everywhere
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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(() ->
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -243,7 +243,7 @@ public class SlayerPlugin extends Plugin
|
||||
}
|
||||
|
||||
@Provides
|
||||
SlayerConfig getConfig(ConfigManager configManager)
|
||||
SlayerConfig provideSlayerConfig(ConfigManager configManager)
|
||||
{
|
||||
return configManager.getConfig(SlayerConfig.class);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user