summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/base/models
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2021-03-22 18:49:19 +0100
committercyberta <cyberta@riseup.net>2021-04-22 22:53:01 +0200
commitff5188d7de1df36c5d71d309a08d290560e9d337 (patch)
treed4f3aa7ccfc8a41ad38a6c9a21413aa33f49f537 /app/src/main/java/se/leap/bitmaskclient/base/models
parent95174abcb87af9d07465cda5c23cc35e1987b6d9 (diff)
initial draft for gateway selection on Android
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/models')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/models/Location.java42
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java9
2 files changed, 51 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java
new file mode 100644
index 00000000..ae7818ba
--- /dev/null
+++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Location.java
@@ -0,0 +1,42 @@
+package se.leap.bitmaskclient.base.models;
+
+import androidx.annotation.NonNull;
+
+public class Location {
+ @NonNull public String name;
+ public double averageLoad;
+ public int numberOfGateways;
+ public boolean selected;
+
+ public Location(@NonNull String name, double averageLoad, int numberOfGateways, boolean selected) {
+ this.name = name;
+ this.averageLoad = averageLoad;
+ this.numberOfGateways = numberOfGateways;
+ this.selected = selected;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof Location)) return false;
+
+ Location location = (Location) o;
+
+ if (Double.compare(location.averageLoad, averageLoad) != 0) return false;
+ if (numberOfGateways != location.numberOfGateways) return false;
+ if (selected != location.selected) return false;
+ return name.equals(location.name);
+ }
+
+ @Override
+ public int hashCode() {
+ int result;
+ long temp;
+ result = name.hashCode();
+ temp = Double.doubleToLongBits(averageLoad);
+ result = 31 * result + (int) (temp ^ (temp >>> 32));
+ result = 31 * result + numberOfGateways;
+ result = 31 * result + (selected ? 1 : 0);
+ return result;
+ }
+}
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
index 97f1019b..5d8b4e5d 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Provider.java
@@ -32,6 +32,7 @@ import java.util.Locale;
import static de.blinkt.openvpn.core.connection.Connection.TransportType.OBFS4;
import static se.leap.bitmaskclient.base.models.Constants.CAPABILITIES;
import static se.leap.bitmaskclient.base.models.Constants.GATEWAYS;
+import static se.leap.bitmaskclient.base.models.Constants.LOCATIONS;
import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_ALLOWED_REGISTERED;
import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_ALLOW_ANONYMOUS;
import static se.leap.bitmaskclient.base.models.Constants.TRANSPORT;
@@ -333,6 +334,14 @@ public final class Provider implements Parcelable {
&& !getEipServiceJson().has(ERRORS);
}
+ public boolean hasGatewaysInDifferentLocations() {
+ try {
+ return getEipServiceJson().getJSONObject(LOCATIONS).length() > 1;
+ } catch (NullPointerException | JSONException e) {
+ return false;
+ }
+ }
+
@Override
public int describeContents() {
return 0;