diff --git a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java b/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java index fce8e38..4fa5774 100644 --- a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java +++ b/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java @@ -12,13 +12,9 @@ import dev.brighten.antivpn.database.sql.MySqlVPN; import dev.brighten.antivpn.message.MessageHandler; import dev.brighten.antivpn.utils.ConfigDefault; import dev.brighten.antivpn.utils.MiscUtils; -import dev.brighten.antivpn.utils.VPNResponse; import dev.brighten.antivpn.utils.config.Configuration; import dev.brighten.antivpn.utils.config.ConfigurationProvider; import dev.brighten.antivpn.utils.config.YamlConfiguration; -import dev.brighten.antivpn.utils.json.JSONException; -import dev.brighten.antivpn.utils.json.JSONObject; -import dev.brighten.antivpn.utils.json.JsonReader; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; @@ -160,15 +156,6 @@ public class AntiVPN { } } - public static VPNResponse getVPNResponse(String ip, String license, boolean cachedResults /* faster if set to true*/) - throws JSONException, IOException { - JSONObject result = JsonReader.readJsonFromUrl(String - .format("https://funkemunky.cc/vpn?ip=%s&license=%s&cache=%s", - ip, license.length() == 0 ? "none" : license, cachedResults)); - - return VPNResponse.fromJson(result); - } - private void registerCommands() { commands.add(new AntiVPNCommand()); } diff --git a/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java b/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java index 9a5241e..1f6cc12 100644 --- a/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java +++ b/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java @@ -2,8 +2,9 @@ package dev.brighten.antivpn.api; import dev.brighten.antivpn.AntiVPN; import dev.brighten.antivpn.utils.EvictingMap; -import dev.brighten.antivpn.utils.VPNResponse; +import dev.brighten.antivpn.web.objects.VPNResponse; import dev.brighten.antivpn.utils.json.JSONException; +import dev.brighten.antivpn.web.FunkemunkyAPI; import lombok.Getter; import java.io.IOException; @@ -49,7 +50,7 @@ public abstract class VPNExecutor { if(cachedRes.isPresent()) return cachedRes.get(); else { try { - VPNResponse response = AntiVPN + VPNResponse response = FunkemunkyAPI .getVPNResponse(ip, AntiVPN.getInstance().getVpnConfig().getLicense(), cachedResults); if(response.isSuccess()) { @@ -78,7 +79,7 @@ public abstract class VPNExecutor { if(cachedRes.isPresent()) return cachedRes.get(); else { try { - VPNResponse response = AntiVPN + VPNResponse response = FunkemunkyAPI .getVPNResponse(ip, AntiVPN.getInstance().getVpnConfig().getLicense(), cachedResults); if(response.isSuccess()) { diff --git a/Common/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java b/Common/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java index 6e06c7a..ac8a478 100644 --- a/Common/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java +++ b/Common/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java @@ -1,6 +1,6 @@ package dev.brighten.antivpn.database; -import dev.brighten.antivpn.utils.VPNResponse; +import dev.brighten.antivpn.web.objects.VPNResponse; import java.util.List; import java.util.Optional; diff --git a/Common/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java b/Common/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java index c0d4102..54b3058 100644 --- a/Common/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java +++ b/Common/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java @@ -5,7 +5,7 @@ import dev.brighten.antivpn.api.VPNExecutor; import dev.brighten.antivpn.database.VPNDatabase; import dev.brighten.antivpn.database.sql.utils.MySQL; import dev.brighten.antivpn.database.sql.utils.Query; -import dev.brighten.antivpn.utils.VPNResponse; +import dev.brighten.antivpn.web.objects.VPNResponse; import lombok.SneakyThrows; import java.sql.ResultSet; diff --git a/Common/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java b/Common/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java index fd9ead4..dea196a 100644 --- a/Common/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java +++ b/Common/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java @@ -10,7 +10,7 @@ import com.mongodb.client.model.Indexes; import dev.brighten.antivpn.AntiVPN; import dev.brighten.antivpn.api.VPNExecutor; import dev.brighten.antivpn.database.VPNDatabase; -import dev.brighten.antivpn.utils.VPNResponse; +import dev.brighten.antivpn.web.objects.VPNResponse; import org.bson.Document; import java.util.*; diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java b/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java index a4630cc..9c5d222 100644 --- a/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java +++ b/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java @@ -5,7 +5,7 @@ import dev.brighten.antivpn.api.VPNExecutor; import dev.brighten.antivpn.database.VPNDatabase; import dev.brighten.antivpn.database.sql.utils.MySQL; import dev.brighten.antivpn.database.sql.utils.Query; -import dev.brighten.antivpn.utils.VPNResponse; +import dev.brighten.antivpn.web.objects.VPNResponse; import lombok.SneakyThrows; import java.sql.ResultSet; diff --git a/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java b/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java new file mode 100644 index 0000000..b97c3eb --- /dev/null +++ b/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java @@ -0,0 +1,27 @@ +package dev.brighten.antivpn.web; + +import dev.brighten.antivpn.web.objects.QueryResponse; +import dev.brighten.antivpn.web.objects.VPNResponse; +import dev.brighten.antivpn.utils.json.JSONException; +import dev.brighten.antivpn.utils.json.JSONObject; +import dev.brighten.antivpn.utils.json.JsonReader; + +import java.io.IOException; + +public class FunkemunkyAPI { + + public static VPNResponse getVPNResponse(String ip, String license, boolean cachedResults /* faster if set to true*/) + throws JSONException, IOException { + JSONObject result = JsonReader.readJsonFromUrl(String + .format("https://funkemunky.cc/vpn?ip=%s&license=%s&cache=%s", + ip, license.length() == 0 ? "none" : license, cachedResults)); + + return VPNResponse.fromJson(result); + } + + public static QueryResponse getQueryResponse(String license) throws JSONException, IOException { + JSONObject result = JsonReader.readJsonFromUrl("https://funkemunky.cc/vpn/queryCheck?license=" + license); + + return QueryResponse.fromJson(result); + } +} diff --git a/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java b/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java new file mode 100644 index 0000000..651aa0a --- /dev/null +++ b/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java @@ -0,0 +1,53 @@ +package dev.brighten.antivpn.web.objects; + +import dev.brighten.antivpn.utils.json.JSONException; +import dev.brighten.antivpn.utils.json.JSONObject; +import lombok.Builder; +import lombok.Data; + + +/** + * Used to format the JSON response from https://funkemunky.cc/vpn/queryCheck into an object for project use. + */ +@Data +@Builder(toBuilder = true) +public class QueryResponse { + + private boolean validPlan; + private String planType; + private long queries; + private long queriesMax; + + /** + * + * Takes a JSON String and feeds it into {@link QueryResponse#fromJson(JSONObject)} + * + * @param jsonString String (formatted in JSON) + * @return QueryResponse + * @throws JSONException Will throw if JSON is not formatted properly. + */ + public static QueryResponse fromJson(String jsonString) throws JSONException { + return fromJson(new JSONObject(jsonString)); + } + + /** + * + * Will format response from https://funkemunky.cc/vpn/queryCheck into an Object for use. + * + * @param object JSOnObject + * @return QueryResponse + * @throws JSONException If there is an error with the API. + */ + public static QueryResponse fromJson(JSONObject object) throws JSONException { + boolean validPlan = object.getBoolean("validPlan"); + + if(!validPlan) { // Nothing else will be returned from API if validPlan is false. + return QueryResponse.builder().validPlan(false).build(); + } + + return QueryResponse.builder().validPlan(object.getBoolean("validPlan")) + .planType(object.getString("planType")) + .queries(object.getLong("queries")) + .queriesMax(object.getLong("queriesMax")).build(); + } +} diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/VPNResponse.java b/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java similarity index 98% rename from Common/src/main/java/dev/brighten/antivpn/utils/VPNResponse.java rename to Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java index 07e1a58..a3e83b9 100644 --- a/Common/src/main/java/dev/brighten/antivpn/utils/VPNResponse.java +++ b/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java @@ -1,11 +1,10 @@ -package dev.brighten.antivpn.utils; +package dev.brighten.antivpn.web.objects; import dev.brighten.antivpn.utils.json.JSONException; import dev.brighten.antivpn.utils.json.JSONObject; import lombok.*; -@Getter -@Setter +@Data @AllArgsConstructor @RequiredArgsConstructor @Builder