From 553e56862927f8591fd37ad3e86425e640b23eaf Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 7 Feb 2020 08:40:26 -0500 Subject: [PATCH] client: create combined cml/templeosrs xp updater plugin This removes the old CML plugin which is now no longer needed Co-authored-by: Alexsuperfly --- .../plugins/xpupdater/XpUpdaterConfig.java | 54 +++++++++ .../XpUpdaterPlugin.java} | 106 +++++++++++++----- 2 files changed, 130 insertions(+), 30 deletions(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterConfig.java rename runelite-client/src/main/java/net/runelite/client/plugins/{crystalmathlabs/CrystalMathLabs.java => xpupdater/XpUpdaterPlugin.java} (62%) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterConfig.java new file mode 100644 index 0000000000..722a2ce44f --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterConfig.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2020, Alexsuperfly + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.xpupdater; + +import net.runelite.client.config.ConfigGroup; +import net.runelite.client.config.ConfigItem; + +@ConfigGroup("xpupdater") +public interface XpUpdaterConfig +{ + @ConfigItem( + position = 1, + keyName = "cml", + name = "Crystal Math Labs", + description = "Automatically updates your stats on crystalmathlabs.com when you log out" + ) + default boolean cml() + { + return false; + } + + @ConfigItem( + position = 2, + keyName = "templeosrs", + name = "TempleOSRS", + description = "Automatically updates your stats on templeosrs.com when you log out" + ) + default boolean templeosrs() + { + return false; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java similarity index 62% rename from runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java rename to runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java index 65b45bdef0..8e45584edf 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpupdater/XpUpdaterPlugin.java @@ -1,5 +1,6 @@ /* * Copyright (c) 2018, Adam + * Copyright (c) 2020, Alexsuperfly * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,17 +23,19 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package net.runelite.client.plugins.crystalmathlabs; +package net.runelite.client.plugins.xpupdater; 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; import net.runelite.api.Player; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -45,13 +48,13 @@ import okhttp3.Request; import okhttp3.Response; @PluginDescriptor( - name = "Crystal Math Labs", - description = "Automatically updates your stats on Crystal Math Labs when you log out", - tags = {"cml", "external", "integration"}, + name = "XP Updater", + description = "Automatically updates your stats on external xptrackers when you log out", + tags = {"cml", "templeosrs", "temple", "external", "integration"}, enabledByDefault = false ) @Slf4j -public class CrystalMathLabs extends Plugin +public class XpUpdaterPlugin extends Plugin { /** * Amount of EXP that must be gained for an update to be submitted. @@ -65,6 +68,15 @@ public class CrystalMathLabs extends Plugin private boolean fetchXp; private long lastXp; + @Inject + private XpUpdaterConfig config; + + @Provides + XpUpdaterConfig getConfig(ConfigManager configManager) + { + return configManager.getConfig(XpUpdaterConfig.class); + } + @Override protected void startUp() { @@ -117,33 +129,67 @@ public class CrystalMathLabs extends Plugin String reformedUsername = username.replace(" ", "_"); OkHttpClient httpClient = RuneLiteAPI.CLIENT; - HttpUrl httpUrl = new HttpUrl.Builder() - .scheme("https") - .host("crystalmathlabs.com") - .addPathSegment("tracker") - .addPathSegment("api.php") - .addQueryParameter("type", "update") - .addQueryParameter("player", reformedUsername) - .build(); - - Request request = new Request.Builder() - .header("User-Agent", "RuneLite") - .url(httpUrl) - .build(); - - httpClient.newCall(request).enqueue(new Callback() + if (config.cml()) { - @Override - public void onFailure(Call call, IOException e) - { - log.warn("Error submitting CML update, caused by {}.", e.getMessage()); - } + HttpUrl url = new HttpUrl.Builder() + .scheme("https") + .host("crystalmathlabs.com") + .addPathSegment("tracker") + .addPathSegment("api.php") + .addQueryParameter("type", "update") + .addQueryParameter("player", reformedUsername) + .build(); - @Override - public void onResponse(Call call, Response response) throws IOException + Request request = new Request.Builder() + .header("User-Agent", "RuneLite") + .url(url) + .build(); + + httpClient.newCall(request).enqueue(new Callback() { - response.close(); - } - }); + @Override + public void onFailure(Call call, IOException e) + { + log.warn("Error submitting CML update, caused by {}.", e.getMessage()); + } + + @Override + public void onResponse(Call call, Response response) + { + response.close(); + } + }); + } + + if (config.templeosrs()) + { + HttpUrl url = new HttpUrl.Builder() + .scheme("https") + .host("templeosrs.com") + .addPathSegment("php") + .addPathSegment("add_datapoint.php") + .addQueryParameter("player", reformedUsername) + .build(); + + Request request = new Request.Builder() + .header("User-Agent", "RuneLite") + .url(url) + .build(); + + httpClient.newCall(request).enqueue(new Callback() + { + @Override + public void onFailure(Call call, IOException e) + { + log.warn("Error submitting TempleOSRS update, caused by {}.", e.getMessage()); + } + + @Override + public void onResponse(Call call, Response response) + { + response.close(); + } + }); + } } }