diff options
| author | cyBerta <cyberta@riseup.net> | 2025-03-18 18:00:02 +0100 |
|---|---|---|
| committer | cyBerta <cyberta@riseup.net> | 2025-03-18 18:00:02 +0100 |
| commit | 47275b6c089517c1d972175c0202a42ed70f2ca3 (patch) | |
| tree | 237b913039ebfe55a35dc01474eaad1fc1f48266 /app/src/main/java | |
| parent | 6bc28c48be8e8a4f58950dffb1d10c453777cfa1 (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.java | 29 |
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 |
