diff options
| -rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/models/GatewayJson.java | 61 | ||||
| -rw-r--r-- | app/src/test/java/se/leap/bitmaskclient/base/models/GatewayJsonTest.java | 29 | 
2 files changed, 90 insertions, 0 deletions
| diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/GatewayJson.java b/app/src/main/java/se/leap/bitmaskclient/base/models/GatewayJson.java new file mode 100644 index 00000000..8aca58c6 --- /dev/null +++ b/app/src/main/java/se/leap/bitmaskclient/base/models/GatewayJson.java @@ -0,0 +1,61 @@ +package se.leap.bitmaskclient.base.models; + +import androidx.annotation.NonNull; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.SerializedName; + +import org.json.JSONObject; + +public class GatewayJson { +    private String location; +    @SerializedName(value = "ip_address") +    private String ipAddress; +    @SerializedName(value = "ip_address6") +    private String ipAddress6; +    private String host; +    private Capabilities capabilities; + +    public GatewayJson(String location, String ipAddress, String ipAddress6, String host, Capabilities capabilities)  { +        this.location = location; +        this.ipAddress = ipAddress; +        this.ipAddress6 = ipAddress6; +        this.host = host; +        this.capabilities = capabilities; +    } + +    @NonNull +    @Override +    public String toString() { +        return new Gson().toJson(this); +    } + +    public static GatewayJson fromJson(JSONObject json) { +        GsonBuilder builder = new GsonBuilder(); +        return builder.create().fromJson(json.toString(), GatewayJson.class); +    } + +    public static class Capabilities { +        private Boolean adblock; +        @SerializedName(value = "filter_dns") +        private Boolean filterDns; +        private Boolean limited; +        private Transport[] transport; +        @SerializedName(value = "user_ips") +        private Boolean userIps; + +        public Capabilities(Boolean adblock, Boolean filterDns, Boolean limited, Transport[] transport, Boolean userIps) { +            this.adblock = adblock; +            this.filterDns = filterDns; +            this.limited = limited; +            this.transport = transport; +            this.userIps = userIps; +        } +        @NonNull +        @Override +        public String toString() { +            return new Gson().toJson(this); +        } +    } +} diff --git a/app/src/test/java/se/leap/bitmaskclient/base/models/GatewayJsonTest.java b/app/src/test/java/se/leap/bitmaskclient/base/models/GatewayJsonTest.java new file mode 100644 index 00000000..61275378 --- /dev/null +++ b/app/src/test/java/se/leap/bitmaskclient/base/models/GatewayJsonTest.java @@ -0,0 +1,29 @@ +package se.leap.bitmaskclient.base.models; + +import static org.junit.Assert.assertEquals; +import static de.blinkt.openvpn.core.connection.Connection.TransportType.OBFS4; +import static se.leap.bitmaskclient.eip.GatewaysManager.PINNED_OBFUSCATION_PROXY; + +import org.junit.Test; + +import de.blinkt.openvpn.core.connection.Connection; + +public class GatewayJsonTest { + +    @Test +    public void testToString() { +        String gatewayJSON = "{\"location\":\"Unknown Location\",\"ip_address\":\"1.2.3.4\",\"host\":\"pinned.obfuscation.proxy\",\"capabilities\":{\"adblock\":false,\"filter_dns\":false,\"limited\":false,\"transport\":[{\"type\":\"obfs4\",\"protocols\":[\"tcp\"],\"ports\":[\"1194\"],\"options\":{\"cert\":\"xxxxxxx\",\"iatMode\":\"0\"}}],\"user_ips\":false}}"; + +        Connection.TransportType transportType = OBFS4; +        Transport[] transports = new Transport[]{ +                new Transport(transportType.toString(), +                        new String[]{"tcp"}, +                        new String[]{"1194"}, +                        "xxxxxxx")}; +        GatewayJson.Capabilities capabilities = new GatewayJson.Capabilities(false, false, false, transports, false); +        GatewayJson gatewayJson = new GatewayJson("Unknown Location", "1.2.3.4", null, PINNED_OBFUSCATION_PROXY, capabilities); + +        assertEquals(gatewayJSON, gatewayJson.toString()); +    } + +}
\ No newline at end of file | 
