summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2025-03-18 18:00:02 +0100
committercyBerta <cyberta@riseup.net>2025-03-18 18:00:02 +0100
commit47275b6c089517c1d972175c0202a42ed70f2ca3 (patch)
tree237b913039ebfe55a35dc01474eaad1fc1f48266 /app/src/main/java
parent6bc28c48be8e8a4f58950dffb1d10c453777cfa1 (diff)
fix parsing query parameters from invite code uri
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java29
1 files changed, 12 insertions, 17 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java
index 7048c48d..32eabadf 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Introducer.java
@@ -1,12 +1,13 @@
package se.leap.bitmaskclient.base.models;
+import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import java.io.UnsupportedEncodingException;
-import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
+import java.util.Locale;
public class Introducer implements Parcelable {
private String type;
@@ -87,38 +88,32 @@ public class Introducer implements Parcelable {
}
public static Introducer fromUrl(String introducerUrl) throws URISyntaxException, IllegalArgumentException {
- URI uri = new URI(introducerUrl);
- String fqdn = getQueryParam(uri, "fqdn");
+ Uri uri = Uri.parse(introducerUrl);
+ String fqdn = uri.getQueryParameter("fqdn");
if (fqdn == null || fqdn.isEmpty()) {
throw new IllegalArgumentException("FQDN not found in the introducer URL");
}
- boolean kcp = "1".equals(getQueryParam(uri, "kcp"));
+ boolean kcp = "1".equals(uri.getQueryParameter( "kcp"));
- String cert = getQueryParam(uri, "cert");
+ String cert = uri.getQueryParameter( "cert");
if (cert == null || cert.isEmpty()) {
throw new IllegalArgumentException("Cert not found in the introducer URL");
}
- String auth = getQueryParam(uri, "auth");
+ String auth = uri.getQueryParameter( "auth");
if (auth == null || auth.isEmpty()) {
throw new IllegalArgumentException("Authentication token not found in the introducer URL");
}
return new Introducer(uri.getScheme(), uri.getAuthority(), cert, fqdn, kcp, auth);
}
- public String toUrl() throws UnsupportedEncodingException {
- return String.format("%s://%s?fqdn=%s&kcp=%d&cert=%s&auth=%s", type, address, URLEncoder.encode(fullyQualifiedDomainName, "UTF-8"), kcpEnabled ? 1 : 0, URLEncoder.encode(certificate, "UTF-8"), URLEncoder.encode(auth, "UTF-8"));
+ public String getAuthToken() {
+ return auth;
}
- private static String getQueryParam(URI uri, String param) {
- String[] queryParams = uri.getQuery().split("&");
- for (String queryParam : queryParams) {
- String[] keyValue = queryParam.split("=");
- if (keyValue.length == 2 && keyValue[0].equals(param)) {
- return keyValue[1];
- }
- }
- return null;
+ public String toUrl() throws UnsupportedEncodingException {
+ return String.format(Locale.US, "%s://%s?fqdn=%s&kcp=%d&cert=%s&auth=%s", type, address, URLEncoder.encode(fullyQualifiedDomainName, "UTF-8"), kcpEnabled ? 1 : 0, URLEncoder.encode(certificate, "UTF-8"), URLEncoder.encode(auth, "UTF-8"));
}
+
} \ No newline at end of file